批量复制出现错误,xcopy 工作正常

批量复制出现错误,xcopy 工作正常

我正在编写一个通用文件备份程序。它在驱动器中搜索与一组类型匹配的文件,然后将它们写入桌面上的文件夹。我xcopy在 Windows XP 上使用 编写了它,但在了解到Vista 及更高版本中xcopy已弃用 而改用后robocopy,仍然想保持兼容性,我决定切换到未弃用的copy

问题就出在这里。我正在尝试修复复制例程。我以为我已经把所有事情都整理好了,但它什么都没复制。我的输出是每次迭代复制的文件为零。

原始代码使用xcopy

for /r %%a in (*.bmp *.dds *.gif *.jpg *.jpeg *.png *.psd *.pspimage *.tga *.thm *.tif *.tiff) do (
   echo f | xcopy "%%a" "%HOMEDRIVE%%HOMEPATH%\Desktop\LDR\Images\Bitmap\%%~nxa" /q /y /g /c
)

修改(损坏)代码使用copy

for /r %%a in (*.bmp *.dds *.gif *.jpg *.jpeg *.png *.psd *.pspimage *.tga *.thm *.tif *.tiff) do (
   copy "%%a" "%HOMEDRIVE%%HOMEPATH%\Desktop\LDR\Images\Bitmap\%%~nxa" /d /y /z
)

输出:

The system cannot find the path specified.
    0 files copied.

我知道似乎每个人都使用xcopyrobocopy但有人可以帮忙吗copy

注意:我使用 Batch 来使其非常轻量且可通过命令行访问。

答案1

终于找到解决方案了!

如果未指定目录,则显然xcopy会创建目录。我还没有\LDR\Images\Bitmap布置好文件路径。 copy不知道如何创建文件夹,所以我必须事先生成它们,这有点烦人,因为xcopy当文件夹里没有任何文件可放时,它不会创建文件夹。copy我创建文件夹时假设它们会被填满。

谢谢您的帮助。 记录:copy不会创建不存在的文件路径。 xcopy是的!

更新:我的最终解决方案。运行起来非常顺畅。

for /r %%a in (*.bmp *.dds *.gif *.jpg *.jpeg *.png *.psd *.pspimage *.tga *.thm *.tif *.tiff) do (
   if not exist "%HOMEDRIVE%%HOMEPATH%\Desktop\LDR\Images\Bitmap\" (md "%HOMEDRIVE%%HOMEPATH%\Desktop\LDR\Images\Bitmap\")
   copy "%%a" "%HOMEDRIVE%%HOMEPATH%\Desktop\LDR\Images\Bitmap\%%~nxa" /d /y /z
)

相关内容