Имам пакетен файл,
bat1.bat
bat2.bat
но спира в края на bat1
някакви улики?
Имам пакетен файл,
bat1.bat
bat2.bat
но спира в края на bat1
някакви улики?
Използвайте call
:
call bat1.cmd
call bat2.cmd
По подразбиране, когато просто стартирате пакетен файл от друг, контролът няма да се върне обратно към извикващия. Ето защо трябва да използвате call
.
По принцип, ако имате партида като тази:
@echo off
echo Foo
batch2.cmd
echo Bar
тогава ще изведе само
Foo
Ако го напишете като
@echo off
echo Foo
call batch2.cmd
echo Bar
обаче ще изведе
Foo
Bar
тъй като след като batch2
приключи, управлението на програмата се предава обратно на вашия оригинален пакетен файл.
Това може да се случи, ако bat1.bat спре необичайно (освен просто да работи до края, като извикване на изход) и можете да заобиколите това, като използвате нов cmd.exe за стартиране на всеки bat файл:
start /b /wait bat1.bat
start /b /wait bat2.bat
Можете да го пропуснете за последния, ако няма да следвате команди във вашия bat файл.
start
тук обаче е пресилено. И имате нужда от допълнителен exit
в края на под-партидите, за да убиете процеса cmd
, който е създаден. В противен случай ще се окажете на нова конзола след стартирането на първата партида.
- person Joey; 15.01.2010
За да стартирате множеството .exe файлове наведнъж, първо трябва да създадете .bat файл и след това да добавите всичките си .exe файлове, както е показано по-долу:
D:\Data\Feed.exe Books.xml
D:\Data\Feed.exe Mobile.xml
D:\Data\Feed.exe Clothes.xml
И след това запазете като something.bat, след което го стартирайте с cmd.
Нещо друго за търсене:
Имах подобен проблем, при който извиквах множество пакетни файлове с помощта на командата call
, но тя не върна контрола към оригиналния .bat файл.
Открих, че имам команда exit
в края на груповия файл, която затваря прозореца на DOS, преди да се върна към оригиналния файл .bat
и да завърша командите там.
Ако искате да стартирате пакетни файлове последователно, ще трябва да поставите "start bat1.bat" в края на всеки файл.