String 使用带有字符串的cmd递归复制文件夹
我必须复制文件夹中的文件。我是根据一个.txt文件复制的。问题是,现在我有大约1500个由用户创建的文件夹,用户可以根据自己的需要重命名它们。所有文件夹唯一的共同点是一个唯一的id号,后跟随机文本。例如: 1111文件夹1String 使用带有字符串的cmd递归复制文件夹,string,list,batch-file,for-loop,copy,String,List,Batch File,For Loop,Copy,我必须复制文件夹中的文件。我是根据一个.txt文件复制的。问题是,现在我有大约1500个由用户创建的文件夹,用户可以根据自己的需要重命名它们。所有文件夹唯一的共同点是一个唯一的id号,后跟随机文本。例如: 1111文件夹1 2222文件夹重要1 3333重要文件夹 我有一个id为的列表,但当我运行.bat时,它会复制所有在列表中的和不在列表中的文件夹和子文件夹,并且不会复制文件。 以下是脚本: Rem This is a simple log date /t >> Z:\DE
2222文件夹重要1
3333重要文件夹 我有一个id为的列表,但当我运行.bat时,它会复制所有在列表中的和不在列表中的文件夹和子文件夹,并且不会复制文件。 以下是脚本:
Rem This is a simple log
date /t >> Z:\DES\destination\log.txt
Rem List the current folder were the subfolders are
dir /b "Z:\DES\test\" > dir.txt
Rem Navigate and compare the folders
FOR /F "delims=" %%F IN (lista.txt) DO (
FOR /F "delims=" %%G IN (dir.txt) DO (
IF %%F == %%G (xcopy /I /E "Z:\DES\test\%%G" "Z:\DES\destination\%%G" >> Z:\DES\destination\log.txt)
)
)
Rem comparing the variables
REM If %%F == %%G
尝试使用通配符,但未成功
文件列表包含以下id:
11112222
3333
强> 我在列表中尝试了以下方法,但没有成功: 1111*
“1111”
1111%
请帮忙。对不起,我的英语不好。如果带有通配符,则不能使用
。更好的方法:
echo %%G |findstr "^%%F" >nul && copy...
回显文件名(%%G
),检查它是否以您的ID号(%%F
)启动(^
)(将输出重定向到nul
,以保持屏幕清晰),如果启动(&
),则复制它 您的嵌套For循环不起作用,因为(正如@MCND告诉我的)“对于外部循环的每个迭代,对于内部循环的所有迭代都会执行。”请尝试在此处搜索“嵌套For循环”。这里有许多示例和解决方案。注意:请查看此页面上的相关问题列表。FOR/F“delims=“%%F IN(lista.txt)DO FOR/F”delims=“%%G IN(dir.txt)DO echo%%G | findstr”^%%F”>nul和xcopy/I/E“Z:\DES\test\%%G”“Z:\destination\%%G”>>Z:\destination\log.txti仔细检查了一下,我有一个空格,看起来正在工作。用一些测试文件夹做了测试,看起来不错。现在,我在服务器上使用1300个文件夹进行测试,这需要一些时间。非常感谢你的帮助,我想,你不会用手做得更快:D考虑接受答案,所以你的答案被标记为解决。