Подстановка большого количества параметров.
Всех с наступающим!
Народ, подскажите пожалуйста, как реализовать? Есть некая программа, и куча файлов. Нужно, чтобы батник запускал эту программы в виде: programm.exe blabla.txt blabla1.txt .... blabla999.txt. то есть чтобы батник запускал программу с параметрами в виде имен файлов(с расширением) разделенными через пробел. Как я понимаю, самый простой способ, это использовать %1-%9, но этих переменных всего девять... (не считая нуля) а файлов, зачастую, куда больше. вот такое вот наваял: Код:
for %%e in (*.xyz) do ( Все было бы замечательно, но. Почему-то Echo записывает не только название файла, но и зачем-то добавляет в конец символ конца строки. И того у меня выходит файл с построчно выведенными именами файлов, а считать можно только одну строку.. Итак вопрос: как считать весь файл в переменную? Или может не стоит даже заморачиваться с файлом, а можно сделать проще? Заранее спасибо :) |
Цитата:
|
Как интересно, спасибо за быстрый ответ.
Но тогда возникает другой вопрос: как же это использовать? Почему-то запись %~nx* не работает. Как-то иначе можно использовать? И более того, если в %* все параметры, то там и %0?. А %0 - это это имя бат файла. Оно мне точно не нужно :) |
Цитата:
Цитата:
Код:
test.bat blabla1.txt blabla2.txt blabla3.txt blabla4.txt blabla5.txt blabla6.txt blabla7.txt blabla8.txt blabla9.txt blabla10.txt blabla11.txt blabla12.txt blabla13.txt blabla14.txt Код:
@Echo Off Цитата:
Можно запустить и так: Код:
test.bat "blabla1.txt blabla2.txt blabla3.txt blabla4.txt blabla5.txt blabla6.txt blabla7.txt blabla8.txt blabla9.txt blabla10.txt blabla11.txt blabla12.txt blabla13.txt blabla14.txt" Код:
@Echo Off |
Понятно, спасибо.
Но все-же.. проблемы это не решает пока... Дело в том, что файлов очень много. Следовательно запуск батника с параметрами - это тупо перетаскивание всех файлов на сам батник. Если сделать так, то в %* содержатся все те файлы с путями. запись %~nx* не работает. сделать так: Код:
test.bat blabla1.txt blabla2.txt blabla3.txt blabla4.txt blabla5.txt blabla6.txt blabla7.txt blabla8.txt blabla9.txt blabla10.txt blabla11.txt blabla12.txt blabla13.txt blabla14.txt Код:
programm.exe blabla1.txt blabla2.txt blabla3.txt blabla4.txt blabla5.txt blabla6.txt blabla7.txt blabla8.txt blabla9.txt blabla10.txt blabla11.txt blabla12.txt blabla13.txt blabla14.txt есть еще варианты? |
Цитата:
Цитата:
И зачем тогда передавать эти имена в ком строке батнику, если их можно получить в самом батнике и сразу же запустить исполняемый файл с ними. Может так? Код:
@Echo Off |
Цитата:
Цитата:
Может я не понимаю чего-то очевидного? |
Цитата:
Если не сложно, подскажите, что это за SetLocal enabledelayedexpansion? и вот эта запись: allfiles=!allfiles! %%~nxe - это как я понимаю - дописывание к строке.... почему-то у меня не получалось... В любом случае, большое спасибо! :) |
Цитата:
Код:
@Echo Off |
Цитата:
Код:
@echo off |
Почему никто не вспомнил про «shift»?
|
kiripanda,
Цитата:
Но код меня заинтересовал. Зачем куча ^? Почему в конце четыре знака процента, да еще и без переменной... Вообще не понятно, что это за разыменование такое хитрое?:) Для чего здесь используется Call? El Sanchez , Цитата:
По коду аналогичные вопросы :) Ishka, Цитата:
Я про шифт знаю только то, что он сдвигает(необратимо) номера %0-%9 и делает их %1-%10 ну и так далее... или как-то так.. в общем я смутно помню уже :) |
Цитата:
Четыре знака процента (на самом деле 8 = 2 раза по 2 пары) потому, что в батниках, в отличии от ком.строки, знаки процента нужно удваивать – спецсимвол, однако. Куча ^ для экранирования спецсимвола % и самого себя, потому что опять же спецсимвол. В общем, проще сделать, чем объяснить как работает :D Про "знак процента без переменной" прочитайте set/? Цитата:
А нужно наоборот, из построчного списка (который читается по одному элементу командой for) сделать непрерывный. ЗЫ попробуйте lst2str _http://www.ghisler.com/tools.htm |
Значит, я неправильно понял поставленную задачу.
|
Время: 09:53. |
Время: 09:53.
© OSzone.net 2001-