多次复制文件夹及其内容,然后重命名它们

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

【讨论】:

以上是关于多次复制文件夹及其内容,然后重命名它们的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 adf 重命名文件,因为它们被复制到新位置

gsutil 重命名文件,因为它们是从不同目录复制的

Powershell-批量重命名替换文件名

文件复制和重命名

复制文件重命名(如果已存在)PowerShell

For循环复制粘贴文件夹并使用增量重命名它