这看起来非常简单,也许我只是忽略了适当的标志,但是我如何在一个命令中将一个文件从一个目录复制到另一个目录并在目标目录中重命名它呢?这是我的命令:

if exist "bin\development\whee.config.example"
  if not exist "TestConnectionExternal\bin\Debug\whee.config"
    xcopy "bin\development\whee.config.example"
          "TestConnectionExternal\bin\Debug\whee.config"

它每次都会提示我以下内容:

TestConnectionExternal \ bin \调试\哟。配置指定文件名 或目标上的目录名(F =文件,D =目录)?

我想压制这个提示;答案总是F。


当前回答

我遇到了同样的问题时,试图复制文件与新名称只有当文件不存在的目标或存在(与新名称),但是旧的。解决方案是在目标文件名的末尾添加* char。例子:

xcopy "C:\src\whee.config.txt" "C:\dest\bee.config.txt*" /D /Y

其他回答

对于复制大文件,带/J开关的xopy是一个很好的选择。在本例中,简单地用管道F表示文件或D表示目录。此外,还可以将作业保存在数组中以供将来引用。例如:

$MyScriptBlock = {
    Param ($SOURCE, $DESTINATION) 
    'F' | XCOPY $SOURCE $DESTINATION /J/Y 
    #DESTINATION IS FILE, COPY WITHOUT PROMPT IN DIRECT BUFFER MODE
}
JOBS +=START-JOB -SCRIPTBLOCK $MyScriptBlock -ARGUMENTLIST $SOURCE,$DESTIBNATION
$JOBS | WAIT-JOB | REMOVE-JOB

感谢Chand做了一些修改: https://stackoverflow.com/users/3705330/chand

“xxxxxxxxxxxx”是否指定文件名 或目标上的目录名

(F = file, D = directory)? D

if a File : (echo F)
if a Directory (echo D)

xcopy src dest /I

REM这假设dest是一个文件夹,如果它不存在,将创建它

在复制文件时使用copy而不是xcopy。

如。 复制“bin \开发\ whee.config.example” “TestConnectionExternal \ bin \调试\ whee.config”

如果你想复制文件并在目的地更改它的名称,正确的做法是:

Xcopy /f /y "bin\development\example.exe" “TestConnectionExternal \ bin \调试\ NewName.exe *”

一切都会好的