![]() |
можно ли определить количество параметров команды?
Поясню задачу:
в консоли вызываю свой бат-файл, передавая ему какую-то последовательность команд, например: dir md d:\abc\123 copy a.txt b.txt Мне надо, чтобы мой бат-файл запускал поочередно все эти команды. Так вот вопрос, как можно узнать, для какой из списка команд следующее за ним слово ( или группа слов) является параметром команды, а какая команда выполняется без передачи таковых? Извините, если продублировал чей-то вопрос. Спасибо! |
GoodFella, в общем случае - никак, так как "dir md d:\abc\123" можно интерпретировать как две команды либо как одну - листинг каталогов ".\MD" и "d:\abc\123", я уж не говорю о том, что любой EXE-файл может оказаться как командой, так и параметром... так что придется вводить свои правила, по которым делить входной поток на команды... например, брать команды с параметрами в кавычки (при условии, что кавычки не используются в самих параметрах), отделять специальными токенами и т.п.
если используемых команд немного, можно просто сверять каждый параметр обычным IF /I, но с учетом отмеченных ограничений |
Попробуйте так:
test.bat Код:
@Echo Off Код:
test.bat dir,md "d:\abc\123",copy "a.txt" "b.txt",del /s /q "name abc.txt" |
спасибо!) Очень помогли советами! как-то про использование разделителей сам не дошел)
|
хм.. а еще вопрос.
если при вызове моего test.bat напишу 3 команды, то все равно у меня Call будет выполняться 12 раз? Только в тех оставшихся 9 случаях самой команде Call будет передан пустой символ "" ? Можно ли сделать, чтобы если у меня пользователь написал 3 команды, call выполнялся тоже ровно три раза? и на этом цикл заканчивался? Спасибо! |
Цитата:
2 Да, только остальные 9 ничего делать не будут, т.к., в п\программе проверяется наличие параметра 3 Call можно вообще исключить, эта команда здесь применена только для переноса проверки наличия параметра из цикла в п\программу и уменьшения кода. 4 Число циклов определяется в параметре tokens=1-12 Досрочный выход можно легко организовать: Код:
@Echo Off |
спасибо за помощь!
только почему-то когда удаляю команду Echo, оставив : If Defined t (%t%) Else (Pause&Exit) у меня выдает сообщение на экран : Непредвиденное появление: ). |
Попробуйте так:
Код:
... |
все, теперь работает нормально!
спасибо за помощь!) |
Время: 02:27. |
Время: 02:27.
© OSzone.net 2001-