批处理文件 XCOPY 找不到现有目录

批处理文件 XCOPY 找不到现有目录

我正在编写一个小的批处理文件,将我的 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 无法确定“文件夹”是目录还是文件,并假设它默认为文件。

相关内容