2013-08-07 3 views
-1

Мне нужен синтаксис для вызова командного файла из первого командного файла. Второе имя командного файла изменяется с ревизией. поэтому у меня есть только половина моего второго имени командного файла.Как вызвать командный файл из командного файла

Как выполнить поиск в определенной папке и вызвать второй пакетный файл? `?

+2

Вы можете использовать 'call bat_file_2.bat' в' bat_file_1' – GoodSp33d

+0

@ 2-Stroker, я могу использовать это, если знаю полное имя моего второго командного файла. Но здесь имя командного файла изменяется с ревизией, поэтому я не могу его использовать. Я хочу выполнить поиск с bat_file * .bat, а затем позвонить. Я не знаю, как это сделать. –

+0

Невозможно ответить на этот вопрос. Как мы должны знать, что такое текущая версия? В папке может быть любое количество пакетных файлов, соответствующих «первой половине». Как нам узнать, какой из них нужно запустить? Будьте конкретны в отношении правил. Что такое «первая половина»? Каковы правила определения правильной «второй половины»? Как складываются «половинки», чтобы сформировать полное имя файла? – dbenham

ответ

1

Не знаю ревизии префикс или суффикс, но вы можете попробовать что-то вроде этого:

for /f "tokens=1" %%n in ('dir /on /l /b /a-d "bat_file_*.bat"') do set latest_bat_file=%%n 

Это полагающейся на директории/на сортировку по имени, поэтому он помещает последнюю запись в алфавитном порядке в переменной % latest_bat_file%. Вы можете назвать его:

call "%latest_bat_file%" 

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

+0

в качестве альтернативы вы можете сортировать не по имени ('/ on'), а по дате ('/od'), если новые версии имеют более новые временные метки (в конце концов, '/ t' также может помочь). См. 'Dir /?' – Stephan

0

FOR /R <path> будет ходить по дереву каталогов.

FOR /R "%DIR_TO_SEARCH%" %%b IN (matching_*.bat) DO cmd /c "%%~b" 

cmd /c создаст новый экземпляр оболочки, а это значит, что если вызывается файл .BAT устанавливает переменные окружения, они не будут изменены в вызове сценария. Обычно это то, чего хотят люди. Если вы на самом деле хотели, то эти побочные эффекты были сохранены, вместо этого вы можете использовать call "%%~b".

Смежные вопросы