Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 使用带有字符串的cmd递归复制文件夹_String_List_Batch File_For Loop_Copy - Fatal编程技术网

String 使用带有字符串的cmd递归复制文件夹

String 使用带有字符串的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

我必须复制文件夹中的文件。我是根据一个.txt文件复制的。问题是,现在我有大约1500个由用户创建的文件夹,用户可以根据自己的需要重命名它们。所有文件夹唯一的共同点是一个唯一的id号,后跟随机文本。例如:

1111文件夹1
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:

1111
2222
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考虑接受答案,所以你的答案被标记为解决。