@echo off set current_path=%cd% set file_type1=.prt 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请保留原代码优化成指定跳过自定义文件夹
时间: 2023-07-06 20:17:33 浏览: 40
好的,以下是经过优化后的代码:
```batch
@echo off
set current_path=%cd%
set file_type1=.prt
set file_type2=.cxp
set file_type3=.doc
set destination_folder=工艺文件
for /r "%current_path%" %%i in (*) do (
if "%%~xi" == "%file_type1%" (
xcopy "%%i" "%destination_folder%\程序模型\" /s /e
) else if "%%~xi" == "%file_type2%" (
xcopy "%%i" "%destination_folder%\工艺规程\" /s /e
) else if "%%~xi" == "%file_type3%" (
xcopy "%%i" "%destination_folder%\沟通记录\" /s /e
) else if "%%~ni" == "自定义文件夹名称" (
rem 跳过自定义文件夹
) else (
xcopy "%%i" "%destination_folder%\" /s /e
)
)
```
请注意,如果要跳过自定义文件夹,需要将其名称替换为实际的自定义文件夹名称。
相关问题
@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%` 变量来构建完整的路径。
用Windows脚本代码写一个实现自动获取当前路径后指定目录下的文件按照类型(.prt、.cxp、.doc)分别移动到三个文件夹中(程序模型、工艺规程、沟通记录),然后将这三个文件夹复制到目标文件夹(工艺文件)中,并在完成 复制后删除原来的文件夹,跳过名称为未分配的文件夹文件的搜索、移动和复制
可以使用以下脚本实现您的需求:
```
@echo off
set current_path=%cd%
set file_type1=.prt
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 "%%~ni" neq "未分配" (
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
```
在脚本中,首先定义了当前路径、文件类型、文件夹名称以及目标文件夹的变量。然后通过 `if not exist` 命令创建三个文件夹。
接着,在 `for` 循环中遍历当前路径下的所有文件,通过 `if` 命令判断文件名称是否为“未分配”,如果不是,则将文件移动到对应的文件夹中。需要注意的是,由于文件夹名称中包含了中文字符,因此需要使用 `%folder_name1%\` 的形式来引用变量。
最后,通过 `xcopy` 命令将三个文件夹复制到目标文件夹中,并在完成复制后使用 `rd` 命令删除原来的文件夹。