xcopy 文件和目录

xcopy 文件和目录

C:\Jobs\job#1我有一个名为“ ”、C:\Jobs\job#2“ ”等的文件夹C:\Jobs\job#3,其下有很多目录和子目录。我想获取 Jobs 下的所有目录并将它们复制到C:\backup。然后我想将每个 Job#1、2、3 等下的所有文件复制到 以C:\backup\job#1\month\\*.* 使其更清晰。

Source dir = C:\Jobs\job#1\"myfiles&dir"

Destination  dir = C:\Backup\job#1\month\"myfiles&dir"

然后执行下一个文件夹

Source dir = C:\Jobs\job#2\"myfiles&dir"

目标目录 = C:\Backup\job#2\month\"myfiles&dir"

...直到所有文件夹都备份。由于工作文件夹不断增加,通过这种方式,我不需要在这个脚本上添加额外的代码,只需修改月份即可。谢谢。

答案1

如果我理解正确的话,你的目标是递归备份你的文件夹。我建议使用/S参数。输入help xcopy以获取更多信息。

答案2

检查计算机上的 DATE /T 是否以这种格式给出,并且数字部分采用 MM/DD/YYYY 格式。这是 2 个 FOR 语句工作的必要条件。在我的计算机上,DATE /T 给出

C:\>DATE /T
Tue 11/15/2011

C:\>

在任务计划程序中放置对批处理文件的引用。您可以每月运行一次。为了测试任务计划程序是否正在运行它,我建议移动您的计算机时钟。我读过任务计划程序(可能在 XP 中)在执行批处理文件时可能会有点奇怪,但请对其进行测试。

每月在任务计划程序中运行此程序。

month\job 格式的 backup.bat 内容

FOR /F "TOKENS=1,2,3,4 DELIMS=/ " %%A IN ('DATE /T') DO @set mm=%%B
FOR /F "TOKENS=1,2,3,4 DELIMS=/ " %%A IN ('DATE /T') DO @set yyyy=%%D

xcopy c:\jobs c:\bkup\%yyyy%_%mm% /e /I

如果您希望它采用 job\month 格式,正如您所写的,那么首先要注意,您没有地方放置 c:\jobs 中的文件,而只是复制每个子目录及其内容。

您只希望此批次每月运行一次,因此将其放入任务计划程序中。

对于运行的任何 xcopy 行,如果在指定的作业子目录中没有文件或子目录,则不会创建目录结构,但这并不重要。

例如,如果 c:\jobs\a 中没有文件也没有目录。那么将不会创建 c:\bkup\a 和 c:\bkup\a\yyyy_mm。这应该没问题。其他作业,例如子目录 b 中的作业,如果其中有任何文件或目录,并且如果您在那里有任何工作,那么就会有!它会在目标处创建目录。

这可能有助于您理解以下 backup.bat 的部分

C:\>for /f %f in ('dir c:\jobs /ad/b') do @echo xcopy c:\jobs\%f c:\bkup\%f\%yyyy%_
%mm% /e /I
xcopy c:\jobs\a c:\bkup\a\2011_11 /e /I
xcopy c:\jobs\b c:\bkup\b\2011_11 /e /I
xcopy c:\jobs\c c:\bkup\c\2011_11 /e /I

备份的backup.bat内容为job\month格式。

FOR /F "TOKENS=1,2,3,4 DELIMS=/ " %%A IN ('DATE /T') DO @set mm=%%B
FOR /F "TOKENS=1,2,3,4 DELIMS=/ " %%A IN ('DATE /T') DO @set yyyy=%%D

for /f %f in ('dir c:\jobs /ad/b') do xcopy c:\jobs\%f c:\bkup\%f\%yyyy%_
%mm% /e /I

相关内容