Переименование файлов, если они содержат 2 строки с пакетом - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть файл "codes.txt", содержащий один код на строку.

Я пытаюсь найти и переименовать в папке все файлы, содержащие код в их имени, а также другую строку:

@echo off

for /F "tokens=*" %%b in (codes.txt) do  (

// If file names in folder contain %%b and "foo", rename to %%b.'string'
// If file names in folder contain %%b and "foo2", rename %%b.'string2'

)

Спасибо

1 Ответ

0 голосов
/ 10 сентября 2018

Предполагая, что файл `коды содержит:

1234
5678

и у вашего каталога есть файлы с именем:

foo1234.txt
1234ABCfoo.txt
5678.txt

Тогда этот скрипт будет делать:

@echo off
for /f %%i in (codes.txt) do (
   for /f %%a in ('dir /b /a-d *%%i* ^| findstr "foo"') do echo %%a
)

Сначала он проходит по code.txt, используя новые строки в качестве разделителей. Затем он выполнит dir для файлов, содержащих коды, и findstr для foo в любом месте имени. Используя приведенные выше файлы, он отобразит только 2 найденных совпадения:

foo1234.txt
1234ABCfoo.txt

Он не будет совпадать с 5678.txt, поскольку в нем нигде не было указано foo.

Очевидно, вам нужно изменить часть echo в моем скрипте на команду, которую вы хотите выполнить.

...