Batch file 如何在重新创建文件夹结构时将特定文件从源目录复制到目标目录

Batch file 如何在重新创建文件夹结构时将特定文件从源目录复制到目标目录,batch-file,dos,Batch File,Dos,我只能使用批处理。目标文件夹应包含复制的文件以及源目录的目录结构(仅适用于复制的文件)。例如: 来源:C:\folder1\folder2\folder3\text1.txt 目的地:C:\backup 执行命令后,目标文件夹应如下所示: C:\backup\folder1\folder2\folder3\text1.txt 我只能使用C:\(根目录)中的命令。 在我的源代码中,有多个文件名为=“text1.text”,但文件夹结构不同。我只希望复制我提供的路径(源)的“text1.txt”,而

我只能使用批处理。目标文件夹应包含复制的文件以及源目录的目录结构(仅适用于复制的文件)。例如:

来源:C:\folder1\folder2\folder3\text1.txt 目的地:C:\backup

执行命令后,目标文件夹应如下所示: C:\backup\folder1\folder2\folder3\text1.txt

我只能使用C:\(根目录)中的命令。 在我的源代码中,有多个文件名为=“text1.text”,但文件夹结构不同。我只希望复制我提供的路径(源)的“text1.txt”,而不是所有名为“text1.txt”的文件[这可以通过使用--xcopy source\text1.txt*Destination/S/Y实现]。请帮助

@ECHO OFF
SETLOCAL
:: This command alone will accomplish the task using ONLY XCOPY
:: BUT I'm changing the directorynames to suit my system
::
XCOPY c:\sourcedir\a\b\text1.txt u:\backup\sourcedir\a\b\
::
:: Or leave the last XCOPY out and this batch will do the same
:: if you supply the parameter "c:\sourcedir\a\b\text1.txt"
::
:: IE. at the prompt, enter
::
:: thisbatchname "c:\sourcedir\a\b\text1.txt"
::
:: (where the quotes are optional UNLESS the parameter contains 
::  a special character or a space"
::
XCOPY "%~1" "u:\backup2%~p1"
第一个XCOPY应该是显而易见的

第二种方法是使用
%~1
,这是第一个参数,减去括起来的引号(如果有的话)-然后对其进行重新计算,以确保生成的字符串被解析为单个字符串

第二个参数是XCOPY strings
U:\BACKUP2
%~p1
-这是参数1的
p
-路径,然后引用整个参数

因此,以
“c:\sourcedir\a\b\text1.txt”
作为参数执行的命令将是

xcopy "c:\sourcedir\a\b\text1.txt" "u:backup2\sourcedir\a\b\"

它根据需要创建目标树。

如何/在何处指定要处理的路径(或排除的路径)?您可以创建一个批处理,该批处理访问所有子目录,并对每个未排除的子目录执行复制命令。例如,我创建了这样的批处理来复制一个树状分支,在这个过程中跳过所有包含特殊“excludeme!”标记文件的目录,只使用dir、copy、if和for“dir/S/B,捕获输入,并使用for迭代结果名称。对于每个目录,执行批处理或命令,执行“如果markerfile不存在,则将此目录的所有文件(但没有子目录)复制到目标”“。最大的问题是语法错误、目录和文件名中的银行以及长文件名,所有这些问题都可以通过使用for、dir、if和copy命令行帮助中的双引号和其他技巧来解决。我需要一个批处理,它接受输入为:C:\folder1\folder2\folder3\text1.txt(参数1)C:\backup(参数2)。。。我没有特殊的“请勿复制我”标记。是否有任何xcopy comand可以执行此操作?是否需要
批处理
xcopy
命令?您在最后两条评论中都提到了。非常恰当,您应该在大写字母批中添加一些帮助文本。:)哇!因此,我们花了那么多的时间才理解,要指定一个特定的目标位置,您需要将该位置指定为目标位置。叹气。我相信从
xcopy
的每个条目中删除
x
不会改变任何事情@安德烈:是的,但会的。XCOPY将生成路径。复制不会成功