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

时间:2013-04-18 09:16:02

标签: batch-file dos

我必须只使用批次。目标文件夹应具有复制的文件以及源目录的目录结构(仅用于复制的文件)。示例:

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

执行命令后目标文件夹应如下所示: C:\备份\ folder1中\文件夹2 \ folder3 \ text1.txt

我必须只使用C:\(根目录)中的命令。 在我的源代码中有多个文件,其名称=“text1.text”,但具有不同的文件夹结构。我只想复制我提供的路径(源)的“text1.txt”,而不是所有名为“text1.txt”的文件[这可以使用--- xcopy Source \ text1.txt * Destination / S来实现/Y].PLease help。

1 个答案:

答案 0 :(得分:1)

@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字符串U:\BACKUP2%~p1的第二个参数 - 参数1的p - PATH,然后引用整个事物。

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

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

根据需要创建目标树。