我正在编写一个小的批处理文件,将我的 C# 项目复制到另一个驱动器。我用它XCOPY
来复制整个文件夹(我们仍然有一些 XP 机器,所以robocopy
不是一个选择)。但是,当我运行批处理文件时,它告诉我找不到指定的文件(为什么它在寻找文件而不是文件夹,我不知道)。
这是我的文件夹结构。我想复制folder
到驱动器program\dst
上的文件夹O
。
src
-folder
-batchFile.bat
O
-program
--dst
我的 batchFile.bat 包含以下行
XCOPY ".\folder" "O:\program\dst" /E
当我运行这个程序时,它显示:
File Not Found - folder
即使它确实存在(作为文件夹,而不是文件)。
答案1
正如其他答案所建议的,使用.\folder
从当前目录开始,而您需要批处理文件的位置:
XCOPY "%~dp0folder" "O:\program\dst" /E
您可以cd
先进入文件夹,但在我看来这样更优雅。
答案2
我试过了,对我来说很管用。我猜你已经创建了批处理文件的快捷方式,但起始目录不正确。如果是这样,cd
在批处理文件的开头添加一个命令来更改目录src
应该可以解决这个问题,或者使用绝对路径folder
而不是相对路径:
cd "C:\Whatever\src"
XCOPY ".\folder" "O:\program\dst" /E
或者
XCOPY "C:\Whatever\src\folder" "O:\program\dst" /E
答案3
在您的脚本中,将以下命令放在 CMD 文件的最开头:
回显“%cd%”
然后观察该命令产生的结果。
如果您的“文件夹”目录的完整路径是“C:\ABC\folder”,则 echo “%cd%”命令应产生输出“C:\ABC”。但是,如果您看到与此不同的内容,则您的 XCOPY 命令会触发文件未找到错误。这是正常的,因为 XCOPY 无法确定“文件夹”是目录还是文件,并假设它默认为文件。