Назад | Перейти на главную страницу

Пакетный файл для просмотра папок и обработки, если найден конкретный файл

У меня есть большое количество веб-сайтов с одной и той же CMS, которые я хочу обновлять пакетно. Поскольку процесс обновления требует всего лишь копирования обновленных файлов в папку данных сайтов, пакетные файлы кажутся подходящими для этой задачи.

Есть ли хороший метод для итерации по списку папок на один уровень в глубину (не нужно проверять глубже), проверки наличия определенного файла в этой папке и, если он найден, выполнить некоторые команды (в этом случае у меня будет он запускает команду для копирования из места назначения в папку)?

На какой ОС вы работаете? Что-то вроде этого будет работать для Perl:

opendir DIR, $dirname or die "Couldn't open dir '$dirname': $!";
my @files = readdir(DIR); 
closedir DIR; 

foreach my $file (@files) {
   if ($file =~ /filename/) {
      print "Matched file process";
   }
}

В этом случае вы можете использовать Forfiles команда (она встроена в Windows 7/2008 / Vista и должна устанавливаться из Resource Kit в Windows Server 2003).

Просто перечислите всю свою папку в текстовом файле. Затем с помощью цикла for перебираем каждую папку, передавая их в Forfiles команда с /p param, найдите укажите имя файла с помощью /m param. При совпадении выполните команду с /c param.

В любом случае, я советую вам использовать более мощные инструменты, такие как PowerShell.