这看起来非常简单,也许我只是忽略了适当的标志,但是我如何在一个命令中将一个文件从一个目录复制到另一个目录并在目标目录中重命名它呢?这是我的命令:
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。
回到最初的问题:
xcopy "bin\development\whee.config.example" "TestConnectionExternal\bin\Debug\whee.config"
可以用两个命令来完成,例如:
mkdir "c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\.."
xcopy "bin\development\whee.config.example" "c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\"
通过简单地在目标文件的路径上追加“\..”,如果目标目录还不存在,则创建目标目录。在这种情况下
"c:\mybackup\TestConnectionExternal\bin\Debug\"
的父目录是哪个
不存在的目录
"c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\.."
至少对于WIN7来说,mkdir并不关心目录是否
"c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\"
真的存在。
对于复制大文件,带/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