批处理命令XCOPY提示我:是目标文件还是目录

时间:2015-11-18 09:00:24

标签: windows batch-file

当我运行此文件时:

xcopy .\*.odt .\source.zip

我被提示指定source.zip是什么:

xcopy .\*.odt .\source.zip
Does .\source.zip specify a file name
or directory name on the target
(F = file, D = directory)?

在我的情况下,它找到.odt文件来复制文件并放在同一目录中,但新名称为 source.zip 。有没有办法避免提示,因为我总是希望目标是一个文件而不是目录。

1 个答案:

答案 0 :(得分:0)

任何.odt文件(实际上都是.zip格式)是二进制文件,请参阅OpenDocument Document Representation

  
      
  • 作为包中的多个子文档的集合,每个子文档存储完整文档的一部分。这是常见的   OpenDocument文档的表示。它使用文件扩展名   例如.odt.ott.ods.odp ...等。包是一个   带有不同文件扩展名的标准ZIP文件   定义子文档的结构。包中的每个子文档   具有不同的文档根并存储该特定方面   XML文件。所有类型的文档(例如文本和电子表格   文件)使用同一组文件和子文件定义。
  •   

因此,您需要将其视为二进制文件(阅读copy /?):

copy /B .\*.odt .\source.zip

只有当只有一个扩展名为.odt的文件时,上述命令才能顺利运行。否则,它会提示您Overwrite .\source.zip? (Yes/No/All):。为了保持安全:

  • 来自命令行for %G in (.\*.odt) do copy /B "%G" ".\source_%~nG.zip"
  • 来自批处理脚本for %%G in (.\*.odt) do copy /B "%%G" ".\source_%%~nG.zip"

%~nG(或批量%%~nG)说明:阅读Parameter Extensions