Вы можете перебрать список «ключевого слова» один раз и использовать итерационные значения ключевых слов наряду с некоторыми вложенными символами подстановки в качестве строки поиска, то есть *<Keyword>*
. Вы можете пройтись по дереву каталогов каждого значения пути UNC из списка файлов и выполнить операцию копирования только для тех, которые существуют в соответствии со строкой поиска «ключевые слова».
По существу, хотя ...
- Первый цикл for / f будет читать каждую строку списка строковых файлов одну за другой, и значение каждой строки будет повторным значением, которое передается в первом аргументе команде вызова .
- Второй цикл for / f будет считывать каждую строку списка файлов пути UNC одну за другой и передавать ее и значение первого аргумента, переданное первым циклом for / f, как два аргумента с его командой вызова .
- Последний цикл for / r будет рекурсивно искать итеративный путь UNC с итеративным строковым значением в качестве отдельных аргументов, которым он был передан, а затем копировать все соответствующие файлы.
Пакетный скрипт
@ECHO ON SET "strList=\\server\Folder\Path\SearchStrings.txt" SET "pathList=\\server\Folder\Path\UNCPaths.txt" SET "targetPath=\\server\target\folder\path" FOR /F "USEBACKQ TOKENS=*" %%S IN ("%strList%") DO CALL :Paths "%%~S" PAUSE EXIT :Paths FOR /F "USEBACKQ TOKENS=*" %%P IN ("%pathList%") DO CALL :FileExist "%~1" "%%~P" GOTO :EOF :FileExist FOR /R "%~2" %%C IN (*%~1*) DO XCOPY /F /Y "%%~C" "%targetPath%\" GOTO :EOF
Дополнительные ресурсы
-
Команда CALL передаст управление оператору после указанной метки вместе с указанными параметрами. Для выхода из подпрограммы укажите, что
GOTO:eof
это передаст управление в конец текущей подпрограммы. -
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters] Walks the directory tree rooted at [drive:]path, executing the FOR statement in each directory of the tree. If no directory specification is specified after /R then the current directory is assumed. If set is just a single period (.) character then it will just enumerate the directory tree.