![批量复制出现错误,xcopy 工作正常](https://linux22.com/image/1411382/%E6%89%B9%E9%87%8F%E5%A4%8D%E5%88%B6%E5%87%BA%E7%8E%B0%E9%94%99%E8%AF%AF%EF%BC%8Cxcopy%20%E5%B7%A5%E4%BD%9C%E6%AD%A3%E5%B8%B8.png)
我正在编写一个通用文件备份程序。它在驱动器中搜索与一组类型匹配的文件,然后将它们写入桌面上的文件夹。我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.
我知道似乎每个人都使用xcopy
或robocopy
但有人可以帮忙吗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
)