关于命令行:xcopy文件,重命名,禁止“xxx是否指定文件名…”消息

xcopy file, rename, suppress “Does xxx specify a file name…” message

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

1
2
3
4
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"

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

Does TestConnectionExternal\bin\Debug\whee.config specify a file name
or directory name on the target (F = file, D = directory)?

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


我用

1
echo f | xcopy /f /y srcfile destfile

绕过它。


不要使用xcopy,而是使用copy,它没有这个问题。

xcopy通常在执行多个文件/文件夹的递归副本时使用,或者在您需要它提供的验证/提示功能时使用。对于单个文件副本,copy命令工作正常。


另一种选择是使用目标通配符。请注意,这仅在源文件名和目标文件名相同时才有效,因此虽然这不能解决OP的具体示例,但我认为值得分享。

例如:

1
xcopy /y"bin\development\whee.config.example""TestConnectionExternal\bin\Debug\*"

将在目标目录中创建文件"whee.config.example"的副本,而不提示输入文件或目录。

更新:如@chapluck所述:

您可以将"*"更改为"[newFileName].*"。它会保留文件扩展名,但允许重命名。或更多hacky:"[newFileName].[newExt]*"更改扩展名


XCOPY中存在某种未记录的功能。您可以使用:

xcopy"bin development whee.config.example""c: mybackup TestConnectionExternal bin Debug whee.config *"

我刚刚测试了它。 :-)


请访问http://technet.microsoft.com/en-us/library/bb491035.aspx

以下是MAIN ISSUE的内容"......如果Destination不包含现有目录且不以反斜杠()结尾,则会显示以下消息:...

目标是否指定文件名
或目标上的目录名称
(F =文件,D =目录)?

您可以使用/ i命令行选项来禁止显示此消息,这会导致xcopy假定如果源是多个文件或目录,则目标是目录。

花了我一会儿,但只需要RTFM。


所以,有一个简单的解决方案。这无疑是尴尬的,但它确实有效。
如果新文件(文件名)已经存在,xcopy将不会提示找出目标是目录还是文件。如果在xcopy命令之前使用简单的回显到新文件名,它将覆盖空文件。例

1
2
echo.>newfile.txt
xcopy oldfile.txt newfile.txt /Y

这是来自比尔斯答案。

为了让别人真正清楚。

如果要将一个文件从一个位置复制到另一个位置并且您希望创建完整的目录结构,请使用以下命令:

1
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"

是的,在文件名的末尾加一个反斜杠,它不会问你是文件还是目录。因为源中只有一个文件,所以它将假定它是一个文件。


xcopy src dest /I

REM This assumes dest is a folder and will create it, if it doesnt exists


回到原来的问题:

1
 xcopy"bin\development\whee.config.example""TestConnectionExternal\bin\Debug\whee.config"

可以用两个命令来完成,例如:

1
2
mkdir"c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\.."
xcopy"bin\development\whee.config.example""c:\mybackup\TestConnectionExternal\bin\Debug\whee.config"

通过简单地将" .."附加到目标文件的路径,如果目标目录尚不存在,则创建目标目录。在这种情况下

1
"c:\mybackup\TestConnectionExternal\bin\Debug"

这是父目录
不存在的目录

1
"c:\mybackup\TestConnectionExternal\bin\Debug\whee.config\.."

至少对于WIN7 mkdir并不关心目录

1
"c:\mybackup\TestConnectionExternal\bin\Debug\whee.config"

确实存在。


我有一个类似的问题,robocopy和xcopy都没有帮助,因为我想抑制注释并使用不同的目标文件名。我发现

1
type filename.txt > destfolder\destfilename.txt

按照我的要求工作。


XCOPY在目标末尾带*,用于复制文件,无论它们是否存在于目标中
XCOPY在目标末尾用来复制目标中是否存在的文件夹和内容

另外

RoboForm SOURCE DEST文件的文件
RoboForm SOURCE DEST文件夹


我建议robocopy而不是copyxcopy。在客户端或服务器上用作命令或GUI。容忍网络暂停,您可以选择在按文件属性复制副本时忽略文件属性。哦,它支持多核机器,因此文件可以相互"并行"而不是按顺序复制得更快。 robocopy可以在MS TechNet上找到。


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

xcopy /f /y"bin\development\example.exe"
"TestConnectionExternal\bin\Debug
ewName.exe*"

它会好起来的


对于复制大文件,使用/ J开关的xopy是一个不错的选择。在这种情况下,只需管道F表示文件或D管道目录。此外,您可以将作业保存在数组中以供将来参考。例如:

1
2
3
4
5
6
7
$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


在目标路径的末尾放置一个星号(*)以跳过D和F的争议。

例:

xcopy"compressedOutput.xml""../../Execute
Scripts/APIAutomation/Libraries/rerunlastfailedbuild.xml*"


xcopy将允许您将单个文件复制到指定的文件夹中,它不允许您定义目标名称。如果您需要目标名称,请在复制之前重命名。

ren"bin development whee.config.example"whee.config

xcopy / R / Y"bin development whee.config"
"TestConnectionExternal BIN 调试"


由于您实际上没有更改文件名,因此可以从目标中取出文件名,不会有任何问题。

1
xcopy bin\development\whee.config.example TestConnectionExternal\bin\Debug\  /Y

当目标目录保证存在时,以及源可能同样是文件或目录时,此方法很有效。


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

例如
复制"bin development whee.config.example"
"TestConnectionExternal BIN 调试 whee.config"


解决方法,使用ReName ...并将其命名为一些隐藏名称,然后将其命名为其正确名称

C:

CD"C: Users Public Documents My Website AngelFire~Zoe"

XCopy / D / I / V / Y"C: Users Public Documents My Web Sites HostGator~ZoeBeans cop.htm"

Ren"cop.htm""christ-our-passover.htm"


您不能指定它始终是文件。如果您不需要xcopy的其他功能,为什么不使用常规copy