File 循环浏览文件夹,复制和删除
我有一个包含子文件夹的文件夹,如下所示:我能够将文件夹和子文件夹从test1循环复制到test3。但我想通过在复制后删除每个文件夹来扩展功能 但是我无法取而代之的是删除所有测试1到测试3文件夹。测试文件夹只是一个例子,文件夹可以是任何名称File 循环浏览文件夹,复制和删除,file,batch-file,File,Batch File,我有一个包含子文件夹的文件夹,如下所示:我能够将文件夹和子文件夹从test1循环复制到test3。但我想通过在复制后删除每个文件夹来扩展功能 但是我无法取而代之的是删除所有测试1到测试3文件夹。测试文件夹只是一个例子,文件夹可以是任何名称 "C:\BACKUP_FDM_FILES\localbackup\test1" "C:\BACKUP_FDM_FILES\localbackup\test2" "C:\BACKUP_FDM_FILES\localbackup\test3" pushd "C:
"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
您正在使用pushd
转到备份文件夹,因此需要使用popd
返回父文件夹
如果您使用XCOPY,为什么不使用“继任者”ROBOCOPY而不进行任何循环,删除并重新创建文件夹?喜欢
robocopy "C:\BACKUP_FDM_FILES\localbackup\" "C:\FDM\Upload\localbackup" /s /e /COPYALL /dcopy:T /move
这甚至会保留移动文件夹上的时间戳,以及移动文件上的所有属性。附加好处:您可以使用此命令的所有其他有用选项,无需额外费用。您可能希望将
for
更改为:for/d%%G in(*)do(
)。使用rd
而不使用通配符:rd/s/q%%G”
是的,你是对的,我想我没有把通配符放在那里,但它仍然不起作用。它删除了所有文件夹,甚至没有创建它。我的代码中有它,我只是省略了它。它在暂停前有)podpopd
它应该在rd
之前,而不是在代码结束后。所以路径切换到父文件夹不,robocopy一直在删除父文件夹,尤其是不好,而且robocopy永远也不适合循环。谢谢
robocopy "C:\BACKUP_FDM_FILES\localbackup\" "C:\FDM\Upload\localbackup" /s /e /COPYALL /dcopy:T /move