我查看了这里的许多批处理列表主题,但没有找到任何有意义的内容。我有一个包含文件列表(包括路径)的文本文件。我需要先将这些文件复制到外部驱动器,然后从系统驱动器中删除原始文件。下面的批处理文件可以正常工作,但有一个小问题:当文件复制到外部驱动器时,我需要重新创建文件夹结构。例如,如果感兴趣的文件是 C:\foo\foo.txt,我需要将其复制到外部驱动器上的 \foo 目录中。我以为我已经设置了 xcopy 参数来执行此操作,但它只是将所有内容复制到一个文件夹中。
接下来,我想在批处理文件中进行一些错误处理,以防某些文件不存在。
非常感谢您的帮助!以下是我目前所得到的...
@echo off
for /f "tokens=* delims=" %%a in ('type "D:\files.txt"') do xcopy /shrkvy "%%a" "D:\Reclamation"
echo All files copied to reclamation folder.
@echo off
for /f "tokens=* delims=" %%a in ('type "D:\files.txt"') do del "%%a"
echo All files deleted from device.
pause
答案1
我认为你想要的是这样的。如果文件复制失败,它将被写入errors.txt,而不会从源中删除。成功复制的文件将从源中删除。
@echo off
set Source=D:\files.txt
set Destination=D:\Reclamation
SetLocal EnableDelayedExpansion
for /f "tokens=* delims=" %%a in ('type "%Source%"') do (
IF not exist "%Destination%%%~pa" md "%Destination%%%~pa"
xcopy /shrkvy "%%a" "%Destination%%%~pa"
IF NOT !ErrorLevel! EQU 0 (echo "%%a">>"Errors.txt") else (del /q "%%a")
)