2011-03-03 30 views
5

我有一个简单的xcopy脚本,它是从读取目录和文件名的CSV文件的命令行运行的。我以前用过一个非常类似的脚本,没有任何问题。下面是该脚本:为什么xcopy在使用这些参数时不复制文件?

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等,但我似乎无法得到它复制任何文件。

回答

1

那么,这是烦人的;我发现了这个问题。它看起来像当我生成我的CSV文件时,它在每行的末尾放置一个空格,所以xcopy正在查找扩展后有空格的文件。

把我扔掉的东西是它找到的文件,但无法复制它们,让我觉得这是一个网络或xcopy问题。

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

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 = file,D = directory)上指定文件名或目录名?它提供了f回声它被成功复制。因此,它不是指定文件/目录的问题,而是通过网络本身进行复制。

+0

是不是它应该是这样的,但?不是流程:1.Xcopy命令运行; 2.提供文件或目录; 3.echo f执行完成xcopy命令; 4.next xcopy命令运行等。为什么在xcopy之后执行echo f会产生问题? – Saggio 2011-03-03 20:44:45

+0

已更新,可以使用echo f。 Z:如何映射到系统? – pmod 2011-03-03 20:52:34

+0

发现问题;这是csv是如何创建的。谢谢你的帮助! – Saggio 2011-03-03 20:56:07

9

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

  1. 这种失败, “复制0文件(S)”

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

    xcopy pathname1/file pathname2\file 
    
  3. 这只是正常

    xcopy pathname1\file pathname2\file 
    
相关问题