我有一个文件夹,其子文件夹如下所示:我能够将文件夹和子文件夹从test1循环并复制到测试3.但是我希望通过在复制后删除每个文件夹来扩展功能 但我无法将所有测试1删除到测试3文件夹。测试文件夹只是一个例子,文件夹可以是任何名称。
"C:\BACKUP_FDM_FILES\localbackup\test1"
"C:\BACKUP_FDM_FILES\localbackup\test2"
"C:\BACKUP_FDM_FILES\localbackup\test3"
pushd "C:\BACKUP_FDM_FILES"
for /f "tokens=*" %%G in ('dir /b /s /a:d ') do (
echo Found %%G
XCOPY %%G "C:\FDM\Upload" /e /s /y
if errorlevel 0 (
echo Copy succesffully copied reason Files were copied without error and you can delete the content folder
rd "%%G\*" /s /q
mkdir "%%G"
)
)
popD
pause
答案 0 :(得分:1)
如果你诉诸XCOPY,为什么不使用"后继者"没有任何循环的ROBOCOPY,删除并重新创建文件夹?喜欢
robocopy "C:\BACKUP_FDM_FILES\localbackup\" "C:\FDM\Upload\localbackup" /s /e /COPYALL /dcopy:T /move
这甚至可以保留移动文件夹上的时间戳,以及移动文件的所有属性。增加的好处:您可以使用此命令的所有其他有用选项,无需额外费用。
答案 1 :(得分:0)
"C:\BACKUP_FDM_FILES\localbackup\test1"
"C:\BACKUP_FDM_FILES\localbackup\test2"
"C:\BACKUP_FDM_FILES\localbackup\test3"
pushd "C:\BACKUP_FDM_FILES"
for /f "tokens=*" %%G in ('dir /b /s /a:d ') do (
echo Found %%G
XCOPY %%G "C:\FDM\Upload" /e /s /y
if errorlevel 0 (
echo Successfully copied now you can delete folder
popd
rd "%%G\*" /s /q
mkdir "%%G"
)
pause
您正在使用 pushd
转到备份文件夹,因此您需要使用 popd
返回到父文件夹。