为什么xcopy在使用这些参数时不能复制文件?

时间:2011-03-03 16:21:33

标签: windows cmd xcopy

我有一个简单的xcopy脚本,我从命令行运行,该脚本读取目录和文件名的CSV文件。我之前使用过非常相似的脚本而没有任何问题。这是脚本:

Z:\HOME\>for /f "delims=, tokens=1,2,3,4" %i in (Z:\HOME\MissingImages.csv) do
echo f | xcopy "Y:\%j\%k\%l" "C:\Horizon\%j\%k\%l" >> Z:\HOME\MissingImagesLog.txt

但是,它没有复制任何文件 以下是日志文件中的条目:

Does C:\Horizon\K\00\6bef500f.IMG  specify a file name
or directory name on the target
(F = file, D = directory)? f
0 File(s) copied

它正在查找图像,因为如果我将根目录更改为其他内容,脚本将仅使用0 File(s) copied为所有条目填充日志文件,因此文件就在那里并且可以看到......

此外,Z:\驱动器在网络上而不是本地驱动器,但我再次在网络上使用了一个非常相似的脚本而没有问题(只需要更长的时间)。

我尝试了不同的选项,例如/i/s等,但我似乎无法将其复制到任何文件上。

3 个答案:

答案 0 :(得分:11)

如果你在路径中使用正斜杠“/”而不是反斜杠“\”,xcopy也会报告0 File(s) copied,尽管只有你在路径中包含了引号。

  1. “0复制文件”

    失败
    xcopy "pathname1/file" pathname2\file
    
  2. “参数数量无效”

    失败
    xcopy pathname1/file pathname2\file
    
  3. 这很好用

    xcopy pathname1\file pathname2\file
    

答案 1 :(得分:1)

它询问是因为它不知道您是要复制到目录(要创建)还是要提供完整的目标路径名。 这会问:

xcopy pathname1\file.from pathname2\file.to

但是,添加斜杠会告诉您复制到目录:

xcopy pathname1\file.from pathname2\to\

但我没有找到明确告诉我要复制和重命名文件的方法,除了

echo Y | xcopy pathname1\file.from pathname2\file.to

我在你的情况下玩了一下( xcopy )并发现即使它要求 SOMEFILE是否在目标上指定了文件名或目录名(F =文件,D =目录)?它是从 echo 提供的 f 并且被复制了成功。因此,文件/目录指定不是问题,而是通过网络本身进行复制。

答案 2 :(得分:1)

嗯,这很烦人;我发现了这个问题。看起来当我生成我的CSV文件时,它在每行的末尾添加了一个空格,因此xcopy正在寻找扩展后有空格的文件。

让我失望的是它找到了文件,但无法复制它们,让我觉得这是网络或xcopy问题。

我刚刚运行了一个sed脚本来删除eol空格,xcopy脚本现在正在按预期工作。