If "%OS%" =="Windows_NT" setlocal
时间: 2023-07-19 22:55:54 浏览: 85
这是一个Windows命令行中的条件语句,它的作用是判断当前操作系统是否为Windows NT系统,如果是,则启用本地环境变量;如果不是,则忽略本地环境变量的设置。
其中,如果"%OS%"=="Windows_NT"为条件判断语句,表示如果系统变量OS的值等于Windows_NT,则执行setlocal命令;否则,跳过setlocal命令不执行。setlocal命令用于启用本地环境变量,可以在批处理文件中创建临时变量,以避免对全局环境变量的影响。
相关问题
@echo off setlocal enabledelayedexpansion set "file_type=.prt" set "target_dir=程序模型" set "source_dir=%~dp0" for /r "%source_dir%" %%i in ("%file_type%") do ( set "filename=%%~ni" set "extension=%%~xi" set "file_dir=%%~dpi" set "file_dir=!file_dir:%source_dir%=!" set "file_dir=!file_dir:~1,-1!" mkdir "%target_dir%" >nul copy /y "%%~fi" "%target_dir%!filename!!extension!" >nul ) @echo off setlocal enabledelayedexpansion set "file_type=.cxp" set "target_dir=工艺规程" set "source_dir=%~dp0" for /r "%source_dir%" %%i in ("%file_type%") do ( set "filename=%%~ni" set "extension=%%~xi" set "file_dir=%%~dpi" set "file_dir=!file_dir:%source_dir%=!" set "file_dir=!file_dir:~1,-1!" mkdir "%target_dir%" >nul copy /y "%%~fi" "%target_dir%!filename!!extension!" >nul ) @echo off setlocal enabledelayedexpansion set "file_type=.doc" set "target_dir=沟通记录" set "source_dir=%~dp0" for /r "%source_dir%" %%i in ("*%file_type%") do ( set "filename=%%~ni" set "extension=%%~xi" set "file_dir=%%~dpi" set "file_dir=!file_dir:%source_dir%=!" set "file_dir=!file_dir:~1,-1!" mkdir "%target_dir%" >nul copy /y "%%~fi" "%target_dir%!filename!!extension!" >nul ) pause把这个代码加上分别把这三个自定义的文件夹和文件移动到指定的文件夹内
这段代码可以实现将指定目录下的特定类型文件复制并粘贴到指定目录下的文件夹中,你可以根据需要修改变量来适应你的情况。以下是修改后的代码:
```batch
@echo off
setlocal enabledelayedexpansion
:: 设置文件类型和目标文件夹
set "file_type=.prt"
set "target_dir=程序模型"
set "source_dir=%~dp0"
:: 将 .prt 类型的文件复制到目标文件夹中
for /r "%source_dir%" %%i in ("%file_type%") do (
set "filename=%%~ni"
set "extension=%%~xi"
set "file_dir=%%~dpi"
set "file_dir=!file_dir:%source_dir%=!"
set "file_dir=!file_dir:~1,-1!"
mkdir "%target_dir%" >nul
copy /y "%%~fi" "%target_dir%\!filename!!extension!" >nul
)
:: 设置文件类型和目标文件夹
set "file_type=.cxp"
set "target_dir=工艺规程"
:: 将 .cxp 类型的文件复制到目标文件夹中
for /r "%source_dir%" %%i in ("%file_type%") do (
set "filename=%%~ni"
set "extension=%%~xi"
set "file_dir=%%~dpi"
set "file_dir=!file_dir:%source_dir%=!"
set "file_dir=!file_dir:~1,-1!"
mkdir "%target_dir%" >nul
copy /y "%%~fi" "%target_dir%\!filename!!extension!" >nul
)
:: 设置文件类型和目标文件夹
set "file_type=.doc"
set "target_dir=沟通记录"
:: 将 .doc 类型的文件复制到目标文件夹中
for /r "%source_dir%" %%i in ("%file_type%") do (
set "filename=%%~ni"
set "extension=%%~xi"
set "file_dir=%%~dpi"
set "file_dir=!file_dir:%source_dir%=!"
set "file_dir=!file_dir:~1,-1!"
mkdir "%target_dir%" >nul
copy /y "%%~fi" "%target_dir%\!filename!!extension!" >nul
)
pause
```
你需要将 `file_type` 和 `target_dir` 变量修改为你需要的文件类型和目标文件夹,然后保存并运行脚本即可。
@echo off set current_path=%cd% set file_type1=*.prt *.pdf set file_type2=.cxp set file_type3=.doc set folder_name1=程序模型 set folder_name2=工艺规程 set folder_name3=沟通记录 set destination_folder=工艺文件 if not exist "%folder_name1%" mkdir "%folder_name1%" if not exist "%folder_name2%" mkdir "%folder_name2%" if not exist "%folder_name3%" mkdir "%folder_name3%" for /r "%current_path%" %%i in (*) do ( if "%%~xi" == "%file_type1%" ( copy "%%i" "%folder_name1%\" ) else if "%%~xi" == "%file_type2%" ( copy "%%i" "%folder_name2%\" ) else if "%%~xi" == "%file_type3%" ( copy "%%i" "%folder_name3%\" ) ) xcopy "%folder_name1%" "%destination_folder%\%folder_name1%\" /s /e rd "%folder_name1%" /s /q xcopy "%folder_name2%" "%destination_folder%\%folder_name2%\" /s /e rd "%folder_name2%" /s /q xcopy "%folder_name3%" "%destination_folder%\%folder_name3%\" /s /e rd "%folder_name3%" /s /q 修改以上代码实现可以指定多个遍历的文件夹名称
可以通过在代码中添加一个数组来实现指定多个遍历的文件夹名称。下面是修改后的代码:
```
@echo off
setlocal
set "current_path=%cd%"
set "file_type1=*.prt *.pdf"
set "file_type2=.cxp"
set "file_type3=.doc"
set "folder_name1=程序模型"
set "folder_name2=工艺规程"
set "folder_name3=沟通记录"
set "destination_folder=工艺文件"
set "folders=文件夹1 文件夹2 文件夹3"
REM 遍历指定的多个文件夹,查找指定类型的文件并移动到对应的文件夹中
for %%f in (%folders%) do (
if not exist "%%~f" mkdir "%%~f"
for /r "%%~f" %%i in (*) do (
if "%%~xi" == "%file_type1%" (
move "%%~fi" "%%~dpif%folder_name1%\"
) else if "%%~xi" == "%file_type2%" (
move "%%~fi" "%%~dpif%folder_name2%\"
) else if "%%~xi" == "%file_type3%" (
move "%%~fi" "%%~dpif%folder_name3%\"
)
)
)
REM 将三个文件夹复制到目标文件夹中
xcopy "%current_path%\%folder_name1%" "%destination_folder%\%folder_name1%\" /s /e
rd "%current_path%\%folder_name1%" /s /q
xcopy "%current_path%\%folder_name2%" "%destination_folder%\%folder_name2%\" /s /e
rd "%current_path%\%folder_name2%" /s /q
xcopy "%current_path%\%folder_name3%" "%destination_folder%\%folder_name3%\" /s /e
rd "%current_path%\%folder_name3%" /s /q
endlocal
```
在这个修改后的代码中,我们使用了一个名为 `folders` 的数组来存储要遍历的文件夹名称。在遍历文件夹时,我们使用了一个嵌套的 for 循环,第一个循环遍历 `folders` 数组中的每个文件夹,第二个循环遍历每个文件夹中的文件,并根据文件类型移动到对应的文件夹中。在复制和删除文件夹时,我们使用了 `%current_path%` 变量和 `%folder_name%` 变量来构建完整的路径。