У меня есть большое количество веб-сайтов с одной и той же 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.