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

时间:2015-03-13 00:59:18

标签: string list batch-file for-loop copy

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

1111 folder1
2222-文件夹重要1
3333重要文件夹

我有一个带有id的列表,但是当我运行.bat时,它会复制列表中 的所有文件夹和子文件夹,并且不会t复制文件。 这是脚本:

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%

请帮忙。抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

您不能将if与通配符一起使用。更好的方法:

echo %%G |findstr "^%%F" >nul && copy...

回显文件名(%%G),检查它是否以您的ID号码(^)开始(%%F)(将输出重定向到nul以保持屏幕清晰)如果是(&&),请复制它。