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"

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

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

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

410783 次浏览

您不能指定它总是一个文件。如果你不需要xcopy的其他特性,为什么不直接使用普通的copy呢?

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

xcopy通常用于执行多个文件/文件夹的递归复制,或者当你需要它提供的验证/提示功能时。对于单个文件副本,copy命令工作得很好。

我使用

echo f | xcopy /f /y srcfile destfile

为了绕过它。

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

< p >。 复制“bin \开发\ whee.config.example” “TestConnectionExternal \ bin \调试\ whee.config”< / p >

因为您实际上并没有更改文件名,所以可以从目标文件中取出文件名,这样就不会有问题了。

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

当目标目录保证存在时,当源可能同样是一个文件或目录时,这种方法工作得很好。

所以,有一个简单的修复方法。这是公认的尴尬,但它有效。 如果新文件(文件名)已经存在,xcopy将不会提示查找目标是否为目录或文件。如果在xcopy命令前加上对新文件名的简单回显,它将覆盖空文件。示例< / p >
echo.>newfile.txt
xcopy oldfile.txt newfile.txt /Y

另一种选择是使用目的地通配符。注意,这仅适用于源文件名和目标文件名相同的情况,所以虽然这不能解决OP的特定示例,但我认为值得分享。

例如:

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

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

更新:正如@chapluck所提到的:

你可以将"* "改为"[newFileName].*"。它保留文件扩展名,但允许重命名。或者用"[newFileName].[newExt]*"来改变扩展名

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

工作周围,使用重命名…并命名它一些神秘的名字,然后重命名它的正确名称

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- pasover .htm"

xcopy src dest /I

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

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

这里是主要的问题是“……如果Destination不包含现有目录和不以反斜杠结尾(),则会出现以下消息:…

destination是否指定文件名 或目标上的目录名 (F =文件,D =目录)?< / em > < / p >

可以使用/i命令行选项禁止此消息,这将导致xcopy假定目标是一个目录,如果源是多个文件或目录的话。

花了点时间,但我只需要RTFM。

这是比尔的回答。

只是为了让大家明白。

如果你要将一个文件从一个地方复制到另一个,你想要创建完整的目录结构,使用以下命令:

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

真的存在。

XCOPY中有一些未记录的特性。你可以使用:

本\开发\ whee.config选择复制文件”。”“c: \ mybackup \ TestConnectionExternal \ bin \调试\ whee.config *”

我今天刚测试过。: -)

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

任“bin \开发\ whee.config。“whee.config例子

xcopy /R/Y "bin\development\whee.config" “TestConnectionExternal \ bin \调试\”< / p >

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

type filename.txt > destfolder\destfilename.txt

按我的要求工作。

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

xcopy /f /y "bin\development\example.exe" “TestConnectionExternal \ bin \调试\ NewName.exe *”< / p >

一切都会好的

对于复制大文件,带/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 < / p >

XCOPY在目标文件的末尾加上*来复制目标文件中是否存在的文件 在目标文件的末尾使用\复制文件夹和内容,无论目标文件是否存在

另外

RoboForm SOURCE DEST FILE for files 文件夹

的RoboForm源DEST

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

例子:

xcopy "compressedOutput.xml" "../../执行 脚本/ APIAutomation /图书馆/ rerunlastfailedbuild.xml *”< / p >

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

(F = file, D = directory)? D


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

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

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

在使用单个文件时,我使用了这两个命令。

要将一个文件复制到另一个现有的目录,使用copy

copy srcPath\srcFile existingDir\newFile

要将现有文件复制到而且创建新目录,请使用xcopy

xcopy srcPath\srcFile newDirectoryPath\newFile

要抑制xcopy '文件或目录'提示符,请在响应中使用echo。因此,对于文件复制回显在f

echo f | xcopy srcPath\srcFile newDirectoryPath\newFile

注意标记/y在这两个命令中都可以抑制确认以覆盖现有的目标文件。


MS Docs: 复制选择复制文件