xcopy文件,重命名,禁止“xxx指定文件名…”消息

这似乎很简单,也许我只是忽略了正确的标志 ,但我怎么会在一个命令,复制一个文件从一个目录到另一个,并在目的地目录中重命名? 这是我的命令:

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 \ Debug \ whee.config是否在目标(F = file,D =目录)上指定文件名或目录名?

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

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

xcopy通常用于执行多个文件/文件夹的recursion拷贝,或者当您需要它提供的validation/提示function时。 对于单个文件副本, copy命令工作得很好。

我用

 echo f | xcopy /f /y srcfile destfile 

解决它。

另一种select是使用目标通配符。 请注意,这只适用于源文件名和目标文件名是相同的,所以虽然这不能解决OP的具体示例,但我认为这是值得分享的。

例如:

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

将在目标目录中创build文件“whee.config.example”的副本,而不会提示input文件或目录。

更新 :正如@chapluck提到的:

您可以将"* "更改为"[newFileName].*" 。 它坚持文件扩展名,但允许重命名。 或者更多的hacky: "[newFileName].*[newExt]"来改变扩展名

在XCOPY中有某种未公开的function。 您可以使用:

xcopy“bin \ development \ whee.config.example”“c:\ mybackup \ TestConnectionExternal \ bin \ Debug \ whee.config *”

我今天testing了它。 🙂

只要去http://technet.microsoft.com/en-us/library/bb491035.aspx

这是主要问题是“…如果目的地不包含一个现有的目录, 并不以一个反斜杠 (),以下消息出现:…

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

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

花了我一段时间,但所需要的是RTFM。

所以,这是一个简单的修复。 这是公认的尴尬,但它的作品。 如果新文件(文件名)已经存在,xcopy将不会提示找出目标是目录还是文件。 如果在xcopy命令前面加上一个简单的回显,它将覆盖空文件。 例

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

这是来自票据的答案。

只为了让别人清楚。

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

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

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

我build议使用robocopy而不是copyxcopy 。 用作命令或在客户端或服务器上的GUI中。 容忍networking暂停,您可以select在按文件属性复制副本时忽略文件属性。 呵呵,它支持多核心机器,所以文件在彼此“并行”而不是按顺序复制的速度要快得多。 robocopy可以在MS TechNet上find。

回到原来的问题:

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

通过简单地将“\ ..”附加到目标文件的path,如果目标文件尚不存在,则创build目标目录。 在这种情况下

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

这是不存在的目录的父目录

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

至less对WIN7来说mkdir不在乎目录

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

真的存在。

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

例如复制“bin \ development \ whee.config.example”“TestConnectionExternal \ bin \ Debug \ whee.config”

xcopy src dest /I

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

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

 type filename.txt > destfolder\destfilename.txt 

根据我的要求工作。

由于你实际上并没有改变文件名,所以你可以从目标文件中取出文件名,这样就没有问题了。

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

当目标目录保证存在时,以及源文件可能同时是文件或目录时,这种方法运行良好。

解决方法,使用重命名…并将其命名为一个隐秘名称,然后重新命名为其正确的名称

C:

CD“C:\ Users \ Public \ Documents \ My Web Sites \ 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将允许您将单个文件复制到指定的文件夹,它只是不会允许您定义目标名称。 如果您需要目标名称,请在复制之前重命名它。

ren“bin \ development \ whee.config.example”whee.config

xcopy / R / Y“bin \ development \ whee.config”“TestConnectionExternal \ bin \ Debug \”

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

xcopy / f / y“bin \ development \ example.exe”“TestConnectionExternal \ bin \ Debug \ NewName.exe *”

它会工作得很好

你不能指定它始终是一个文件。 如果你不需要xcopy的其他function,为什么不使用普通copy