Sar*_*els 393 command-line xcopy command-prompt
这看起来很简单,也许我只是忽略了正确的标志,但是我如何在一个命令中将文件从一个目录复制到另一个目录并在目标目录中重命名?这是我的命令:
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"
Run Code Online (Sandbox Code Playgroud)
每次都会提示我以下内容:
TestConnectionExternal\bin\Debug\whee.config是否在目标上指定文件名或目录名(F =文件,D =目录)?
我想压制这个提示; 答案永远是F.
Arn*_*hea 626
我用
echo f | xcopy /f /y srcfile destfile
Run Code Online (Sandbox Code Playgroud)
绕过它.
LBu*_*kin 213
不要使用xcopy,copy而是使用,它没有这个问题.
xcopy通常在执行多个文件/文件夹的递归副本时使用,或者在需要它提供的验证/提示功能时使用.对于单个文件副本,该copy命令可以正常工作.
zip*_*der 172
另一种选择是使用目标通配符.请注意,这仅在源文件名和目标文件名相同时才有效,因此虽然这不能解决OP的具体示例,但我认为值得分享.
例如:
xcopy /y "bin\development\whee.config.example" "TestConnectionExternal\bin\Debug\*"
Run Code Online (Sandbox Code Playgroud)
将在目标目录中创建文件"whee.config.example"的副本,而不提示输入文件或目录.
更新:如@chapluck所述:
你可以"* "改为"[newFileName].*".它会保留文件扩展名,但允许重命名.或者更hacky:"[newFileName].[newExt]*"改变扩展
ien*_*xxx 89
XCOPY中存在某种未记录的功能.您可以使用:
xcopy"bin\development\whee.config.example""c:\ mybackup\TestConnectionExternal\bin\Debug\whee.config*"
我刚刚测试了它.:-)
小智 71
请访问http://technet.microsoft.com/en-us/library/bb491035.aspx
以下是MAIN ISSUE的内容"......如果Destination不包含现有目录且不以反斜杠()结尾,则会显示以下消息:...
目标是否在目标上指定文件名或目录名(F =文件,D =目录)?
您可以使用/ i命令行选项来禁止显示此消息,这会导致xcopy假定如果源是多个文件或目录,则目标是目录.
花了我一会儿,但只需要RTFM.
小智 27
所以,有一个简单的解决方案.这无疑是尴尬的,但它确实有效.如果新文件(文件名)已经存在,xcopy将不会提示找出目标是目录还是文件.如果在xcopy命令之前使用简单的回显到新文件名,它将覆盖空文件.例
echo.>newfile.txt
xcopy oldfile.txt newfile.txt /Y
Run Code Online (Sandbox Code Playgroud)
小智 7
仅当文件不存在于目标中或存在(使用新名称)但较旧时,我才尝试使用新名称复制文件时遇到同样的问题。*解决方案是在目标文件名末尾添加字符。例子:
xcopy "C:\src\whee.config.txt" "C:\dest\bee.config.txt*" /D /Y
Run Code Online (Sandbox Code Playgroud)
这是来自比尔斯答案.
为了让别人真正清楚.
如果要将一个文件从一个位置复制到另一个位置并且您希望创建完整的目录结构,请使用以下命令:
xcopy "C:\Data\Images\2013\08\12\85e4a707-2672-481b-92fb-67ecff20c96b.jpg" "C:\Target Data\\Images\2013\08\12\85e4a707-2672-481b-92fb-67ecff20c96b.jpg\"
Run Code Online (Sandbox Code Playgroud)
是的,在文件名的末尾加一个反斜杠,它不会问你是文件还是目录.因为源中只有一个文件,所以它将假定它是一个文件.