我有一个目录F:\Input
,里面有各种子文件夹。
我需要专门复制那些具有相同命名约定的文件夹,例如India012345.zip
,India09876.zip
等。这些文件夹的文件夹名称不是.zip
,而不是ZIP文件!
我需要将这些文件夹及其内容(子文件夹和文件)复制到其他位置。
CD /D F:\Input\
FOR /f "tokens=*" %%I in ('dir /s /b /a:d "India*"') do echo|xcopy "%%I" "E:\output\" /s
这是我目前的代码,它复制内容但不复制主文件夹India012345.zip
。
F:\Input
的文件夹结构:
India*.zip
在字数方面将是唯一的。
无法重命名。请提供如下复制解决方案:
文件夹E:\Output
应包含批量执行后:
答案 0 :(得分:0)
还必须在目标路径中指定India*.zip
目录名称,并且还应使用命令 XCOPY 的更多选项,如/I
来自动创建目标文件夹。
@echo off
for /F "delims=" %%I in ('dir "F:\Input\India*.zip" /A:D /B /S 2^>nul') do xcopy "%%I" "E:\Output\%%~nxI\" /C /H /I /K /Q /R /S /Y >nul
使用以下方法从复制过程中删除文件夹名称中的异常.zip
非常容易:
@echo off
for /F "delims=" %%I in ('dir "F:\Input\India*.zip" /A:D /B /S 2^>nul') do xcopy "%%I" "E:\Output\%%~nI\" /C /H /I /K /Q /R /S /Y >nul
使用 %%~nI
代替%%~nxI
来摆脱"文件扩展名"来自文件夹名称。
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
dir /?
echo /?
for /?
xcopy /?
另请阅读Microsoft有关Using command redirection operators的文章,了解>nul
的解释。
2^>nul
为2>nul
,重定向操作符>
使用^
进行转义,以便在执行命令 DIR 时应用2>nul
而非在解析 FOR 命令行时解释重定向,这会因语法错误而导致批处理退出。
2>nul
会将 DIR 输出的可能错误消息重定向到 STDERR 到设备 NUL 来压制它。如果命令 DIR 无法找到与文件夹名称通配符模式File not found
匹配的任何文件夹,则会将混淆错误消息India*.zip
输出到标准错误流。