我有一个简单的副本从脚本到我们的一个人丢失了距离我的办公桌20公里的文件
在测试脚本时,如果我的文件shapes.atc
是文件或文件夹
我可以告诉你它是一个文件,但我怎样才能将它自动复制到我的家伙需要只需点击批量完成
xcopy /s/y J:\"My Name"\"FILES IN TRANSIT"\JOHN20101126\"Missing file"\Shapes.atc C:\"Documents and Settings"\"His name"\"Application Data"\Autodesk\"AutoCAD 2010"\"R18.0"\enu\Support\Shapes.atc
答案 0 :(得分:19)
实际上,xcopy不会询问您原始文件是否存在,但是如果您想将其放在名为Shapes.atc的新文件夹中,或者位于Support文件夹中(这就是您想要的。
为防止xcopy询问此问题,只需告诉他目标文件夹,因此没有歧义:
xcopy /s/y "J:\Old path\Shapes.atc" "C:\Documents and Settings\his name\Support"
如果要更改目标中的文件名,只需使用copy(复制文件时比xcopy更适应):
copy /y "J:\Old path\Shapes.atc" "C:\Documents and Settings\his name\Support\Shapes-new.atc
答案 1 :(得分:11)
echo f | xcopy /s/y J:\"My Name"\"FILES IN TRANSIT"\JOHN20101126\"Missing file"\Shapes.atc C:\"Documents and Settings"\"His name"\"Application Data"\Autodesk\"AutoCAD 2010"\"R18.0"\enu\Support\Shapes.atc
答案 2 :(得分:10)
真正的诀窍是:在目标路径末尾使用反斜杠来复制文件。如果您不想要警告,/ Y用于覆盖现有文件。
示例:强>
xcopy /Y "C:\file\from\here.txt" "C:\file\to\here\"
答案 3 :(得分:5)
对于强制文件,我们可以使用管道“echo F |”:
C:\Trash>xcopy 23.txt 24.txt
Does 24.txt specify a file name
or directory name on the target
(F = file, D = directory)?
C:\Trash>echo F | xcopy 23.txt 24.txt
Does 24.txt specify a file name
or directory name on the target
(F = file, D = directory)? F
C:23.txt
1 File(s) copied
对于强制文件夹,我们可以使用/ i参数进行xcopy或使用目标文件夹末尾的反斜杠()。
答案 4 :(得分:3)
/ i开关可能是您的追随者。
来自xcopy /?
/ I如果目标不存在并复制多个文件, 假设目的地必须是目录。
答案 5 :(得分:2)
附加" *"可以在新扩展更短时使用。您需要使用空白填充新扩展名,这只能通过将目标文件名括在引号中来完成。例如:
xcopy foo.shtml "foo.html *"
这将在不提示的情况下复制和重命名。
"这不是一个错误,它是一个功能!" (我曾经在微软停车场看到一辆带有虚荣心板的大众甲壳虫" FEATURE"。)这些重命名语义一直追溯到我编写DOS v.1时。除非新名称中包含通配符(?或*),否则新名称中的字符将逐个替换旧名称中的字符。如果不将空白添加到新名称,则会从旧名称中复制剩余的字符。
答案 6 :(得分:0)
xcopy /s/y J:\"My Name"\"FILES IN TRANSIT"\JOHN20101126\"Missing file"\Shapes.atc C:\"Documents and Settings"\"His name"\"Application Data"\Autodesk\"AutoCAD 2010"\"R18.0"\enu\Support\*.*"
..应该这样做。
好主意:
IF NOT EXIST "C:\Documents and Settings\His name\Application Data\Autodesk\AutoCAD 2010\R18.0\enu\Support\Shapes.atc" ECHO/ && ECHO/ && ECHO * * * * * COPY FAILED - Call JustME at 555-555-1212 && ECHO/ && pause
(假设您已将先前版本重命名为.old)
XCOPY /Z <----- restartable mode - good for large files.
答案 7 :(得分:0)
虚拟主要提示
假设您有源文件和目标文件
%SRC_FILENAME% and %DST_FILENAME%
你可以使用两步法:
@REM on my win 7 system mkdir creates all parent directories also
mkdir "%DST_FILENAME%\.."
xcopy "%SRC_FILENAME% "%DST_FILENAME%\.."
这将解决为例如
mkdir "c:\destination\b\c\file.txt\.."
@REM The special trick here is that mkdir can create the parent
@REM directory of a "virtual" directory (c:\destination\b\c\file.txt\) that
@REM doesn't even need to exist.
@REM So the directory "c:\destination\b\c" is created here.
@REM mkdir "c:\destination\b\c\dummystring\.." would have the same effect
xcopy "c:\source\b\c\file.txt" "c:\destination\b\c\file.txt\.."
@REM xcopy computes the real location of "c:\destination\b\c\file.txt\.."
@REM which is the now existing directory "c:\destination\b\c"
@REM (the parent directory of the "virtual" directory c:\destination\b\c\file.txt\).
当我在构建过程中生成的命令行中偶然发现一些非常狂野的../..-构造时,我想到了这个想法。
答案 8 :(得分:0)
我遇到了完全相同的问题,想要将文件复制到外部硬盘驱动器以进行备份。 如果我想复制一个完整的文件夹,那么COPY非常乐意创建目标文件夹并用所有文件填充它。 但是,我想每天复制一次文件并将今天的日期添加到文件中。 COPY很高兴复制文件并以新格式重命名,但只有目标文件夹已经存在。
我的复制命令看起来像这样:
COPY C:\ SRCFOLDER \ MYFILE.doc D:\ DESTFOLDER \ MYFILE_YYYYMMDD.doc
和你一样,我四处寻找替代开关或其他复制类型命令,但没有任何真正有效的方式。 然后我想通过简单地在复制命令之前添加make目录(MD或MKDIR)命令来分割出两个不同的要求。
所以现在我有了
MKDIR D:\ DESTFOLDER
COPY C:\ SRCFOLDER \ MYFILE.doc D:\ DESTFOLDER \ MYFILE_YYYYMMDD.doc
如果目标文件夹不存在,则会创建它。 如果目标文件夹存在,则会生成错误消息。但是,这不会使批处理文件停止继续执行复制命令。
错误消息说: 子目录或文件D:\ DESTFOLDER已存在
正如我所说,错误消息并不能阻止批处理文件的运行,这是解决问题的一个非常简单的方法。
希望这会有所帮助。