多次复制文件夹及其内容,然后重命名它们
Posted
技术标签:
【中文标题】多次复制文件夹及其内容,然后重命名它们【英文标题】:Copy a folder and its content several times, then rename them 【发布时间】:2013-02-15 22:51:13 【问题描述】:我正在寻找一个用于 Windows 7 的简单批处理脚本,用于从目标复制文件夹及其内容,并将其粘贴到另一个目标,x 次,名称递增。
例子:
给定一个文件夹 C:\Folder。我想将它复制到这个文件夹中:C:\Destination 7 次,名称不同,所以结果看起来像这样(在 C:\Destination 内):
复制1
复制2
复制3
.
.
复制7
提前致谢!
【问题讨论】:
【参考方案1】:for /l %%A in (1,1,7) do @xcopy "C:\Folder" "C:\Destination\Copy%%A" /i
有关所有选项和帮助,请参阅 for /?
和 xcopy /?
。
要在命令行上运行,请确保使用 %A 而不是 %%A。
使用 %variable 从命令提示符执行 for。使用 %%variable 在批处理文件中执行 for 命令。变量区分大小写,必须用 alpha 值表示,例如 %A、%B 或 %C。
【讨论】:
为了更好的衡量标准,我建议您的回答解释 %%A 和 %A 之间的区别。像我这样的人会抓住你的代码行并且无法从命令行运行它。我知道该问题的答案在您链接到的文档中,但为什么不自己完成答案呢? @Ickster 添加了%
符号的说明。
@DavidRuhmann 正是我需要的,但是如何调整它以添加前导零,例如 001
?【参考方案2】:
这就是你需要的:Windows Batch Script for Incremental Backup
@echo off
set source=c:\temp\test\1
set dest_path=c:\temp\test\2\
pushd %dest_path%
setlocal enableDelayedExpansion
set "dest_folder_name=Backup"
set "n=0"
for /f "delims=" %%F in
(
'2^>nul dir /b /ad "%dest_folder_name%*."^|findstr /xri "%dest_folder_name%[0-9]*"'
)
do (
set "name=%%F"
set "name=!name:*%dest_folder_name%=!"
if !name! gtr !n! set "n=!name!"
)
set /a n+=1
set final_destination="%dest_path%%dest_folder_name%%n%"
md %final_destination%
robocopy %source% %final_destination% /E /R:3 /W:10 /FFT /NP /NDL
popd
@echo on
【讨论】:
以上是关于多次复制文件夹及其内容,然后重命名它们的主要内容,如果未能解决你的问题,请参考以下文章