循环文件夹,复制和删除

时间:2017-11-23 10:41:02

标签: file batch-file

我有一个文件夹,其子文件夹如下所示:我能够将文件夹和子文件夹从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

2 个答案:

答案 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 返回到父文件夹

SS64 - POPD