2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2, 3, 4, 5, 6  След.
 
 Запуск батника с параметром
Сообщение04.05.2018, 20:27 
Здравствуйте! Написал батник такого содержания:
Код:
cd /d %0\..
pdflatex %%1

Подскажите, пожалуйста, как его запускать сразу с параметром из командной строки? Как указано здесь,
Код:
bat.bat param1 param2

(в моем случае, понятно, параметр 1) верно или нет?

 
 
 
 Re: Запуск батника с параметром
Сообщение04.05.2018, 21:24 
Да, так. Если в параметре пробелы, его надо будет взять в прямые кавычки ", а если там и они, то не помню нюансы.

 
 
 
 Re: Запуск батника с параметром
Сообщение04.05.2018, 21:43 
Однако, это проблема где-то с pdflatex: сделал, как рассказано здесь, все сработало. Да мне батник нужен для других целей: для запуска другого батника с параметром, пробегающим множество имен файлов. Вот я и выбрал команду pdflatex как, мне казалось, простейшую, для проверки верности вызова батника с параметром. Ладно, пока спасибо за помощь.

 
 
 
 Re: Запуск батника с параметром
Сообщение04.05.2018, 21:45 
Для проверки, какие параметры получают какие значения, можно использовать echo (это встроенная команда, такую программу искать не нужно).

-- Пт май 04, 2018 23:52:19 --

Типа там, echo Параметр 1: %1, и выведется Параметр 1: <значение>.

 
 
 
 Re: Запуск батника с параметром
Сообщение05.05.2018, 21:14 
Не могу заставить %1 считать за параметр. Написал следующий батник:
Код:
echo off
cd /d %0\..
chcp 1251
echo %%1 >> Obshij.txt
more < %%1.asy >> Obshij.txt
echo Параметр 1: %%1
pause

В результате получаю Obshij.txt, в нем %1, а в командной строке вот что:
Код:
C:\Windows\system32>echo off
Текущая кодовая страница: 1251
Не удается найти указанный файл.
Параметр 1: %1
Для продолжения нажмите любую клавишу . . .


-- 05.05.2018, 22:15 --

arseniiv в сообщении #1310089 писал(а):
можно использовать echo (это встроенная команда, такую программу искать не нужно).

Я это знаю.

 
 
 
 Re: Запуск батника с параметром
Сообщение05.05.2018, 21:22 
Sinoid
Вам сказали сделать так:
arseniiv в сообщении #1310089 писал(а):
echo Параметр 1: %1

А вы сделали так:
Sinoid в сообщении #1310290 писал(а):
echo Параметр 1: %%1

У вас на это были веские причины?

 
 
 
 Re: Запуск батника с параметром
Сообщение05.05.2018, 21:44 
wrest в сообщении #1310291 писал(а):
У вас на это были веские причины?

Естественно, были: я это писал в батник. Сейчас попробовал (хотя и знал, что это ничего не изменит: во-первых, явно, неправильно, а, во-вторых, от этой команды результат не зависит, она служит только для контроля, но это, конечно, в данном случае тоже необходимо). Результат: в командной строке:
Код:
C:\Windows\system32>echo off
Текущая кодовая страница: 1251
Не удается найти указанный файл.
Параметр 1:
Для продолжения нажмите любую клавишу . . .

в текстовом файле все тот же один процент.

 
 
 
 Re: Запуск батника с параметром
Сообщение05.05.2018, 22:20 
Sinoid в сообщении #1310293 писал(а):
Результат: в командной строке:

Результат чего? Дайте полностью распечатку какие файлы запускали и что куда вводили.
И еще раз: что вы хотите сделать, подробнее напишите.
"Батники" с параметрами работают 10500 лет уже у всех и везде...

-- 05.05.2018, 22:33 --

Вот такой bat-файл из 3 строчек, помещен в пользовательскую директорию, назван test.bat то есть полный путь к нему C:\Users\wrest\test.bat
Код:
echo off
echo Parameter1: %1
echo Parameter2: %2

У меня при его запуске выдается так:
Код:
C:\Users\wrest>test.bat foo bar

C:\Users\wrest>echo off
Parameter1: foo
Parameter2: bar

C:\Users\wrest>

 
 
 
 Re: Запуск батника с параметром
Сообщение05.05.2018, 23:43 
Да, я что-то упустил двойные проценты. %% нужно указывать, чтобы получить сам символ %, так что %%1 даст при раскрытии переменных %1 и дальше раскрываться не будет. Программы получат строку %1, но сами они уже обычно ничего особенного с ней делать не будут и будет скорее всего ошибка.

-- Вс май 06, 2018 01:46:49 --

Кроме того, если нужно получить имя файла, у которого всё то же, а расширение сменено на другое (вижу %1.asy — тот ли это случай?), придётся засовывать между процентом и номером аргумента всякие буквы и тильды, чтобы извлечь из имени файла кусок; сейчас точно не помню какие.

 
 
 
 Re: Запуск батника с параметром
Сообщение06.05.2018, 13:43 
wrest в сообщении #1310297 писал(а):
И еще раз: что вы хотите сделать, подробнее напишите.

В папке программы Asymptote есть папка examples, там файлы .asy с примерами кода, их там много. Я хочу запихать коды из тех файлов-примеров в один файл, перед каждым кодом вставить название файла, откуда он был взят, а после кода какие-нибудь отделительные знаки, думаю вставить = на всю строку. Написал такой батник (пока без отделительных знаков):
Код:
echo off
cd /d %0\..
chcp 1251
for %%g in (*.asy) do echo %%~ng >> Obshij.txt
for %%f in (*.asy) do  more < %%f >> Obshij.txt
pause

Как и следовало ожидать, вначале перечисляются имена, а потом коды. Решил использовать команду for: переменная пробегает множество имен файлов .asy и с каждым именем как с параметром запускает батник Vyvod2.bat. Сейчас написал Vyvod2.bat:
Код:
echo off
cd /d %0\..
chcp 1251
echo %~n1 >> Obshij.txt
more < %~n1.asy >> Obshij.txt
echo Параметр 1: %~n1
pause

Он при вызове, например,
Код:
Vyvod2.bat bars3

(файл bars3 расширение .asy) делает, что задумано. Осталось написать Vyvod1.bat, запускающий Vyvod2.bat с каждым именем файла .asy. Пробовал так:
Код:
echo off
cd /d %0\..
chcp 1251
for /f in (*.asy) do call Vyvod2.bat %~nf
pause

, да окно закрывается так быстро, что не успеваю прочитать, несмотря на команду pause.
Ваш батник
wrest в сообщении #1310297 писал(а):
Код:

echo off
echo Parameter1: %1
echo Parameter2: %2

работает, потому я и у себя в батниках поставил 1 процент.
arseniiv в сообщении #1310316 писал(а):
придётся засовывать между процентом и номером аргумента всякие буквы и тильды, чтобы извлечь из имени файла кусок

см. мои коды. А я и не знал, что это применимо и для аргументов.

 
 
 
 Re: Запуск батника с параметром
Сообщение06.05.2018, 16:25 
Sinoid
Так делайте сразу в одном "батнике", зачем вам усложнения?
For ..... do (
Записываете разделитель
Записываете имя файла
Записываете содержимое файла )

 
 
 
 Re: Запуск батника с параметром
Сообщение06.05.2018, 17:29 
Sinoid в сообщении #1310384 писал(а):
Код:

echo off
cd /d %0\..
chcp 1251
for /f in (*.asy) do call Vyvod2.bat %~nf
pause

Увидел ошибку, переделал, странно, при таком батнике Vyvod1.bat:
Код:
echo off
cd /d %0\..
chcp 1251
for %%f in (*.asy) do call Vyvod2.bat %%f
for %%g in (*.asy) do echo %%~ng >> imena.txt
pause

получаю требуемое только из первого .asy файла, при этом файла imena.txt вообще не образуется, а в командной строке выводится значение параметра, равным первому файлу. Короче, нет итерации. А при таком файле:
Код:
echo off
cd /d %0\..
chcp 1251
rem for %%f in (*.asy) do call Vyvod2.bat %%f
for %%g in (*.asy) do echo %%~ng >> imena.txt
pause

получаю файл imena.txt со всеми именами файлов .asy, находящихся в папке.

-- 06.05.2018, 18:38 --

wrest в сообщении #1310430 писал(а):
Sinoid
Так делайте сразу в одном "батнике", зачем вам усложнения?
For ..... do (
Записываете разделитель
Записываете имя файла
Записываете содержимое файла )

Так, значит, это работает? Я когда-то пытался так сделать, заставить сделать несколько операций на каждом шаге, не вышло, думал, что-то не так понял или показалось: не смог найти, где видел. Скажите, я еще видел, что несколько команд можно сцеплять &-ом. А это правда?

 
 
 
 Re: Запуск батника с параметром
Сообщение06.05.2018, 18:52 
Все! Получилось! Странное, однако, дело: написал такой батник:
Код:
cd /d %0\..
chcp 1251
pdflatex Vyvod.tex >> 1.txt

в результате файл 1.txt совпадает с логом только в первых 19 строках (лога), за исключением одной строки.

 
 
 
 Re: Запуск батника с параметром
Сообщение06.05.2018, 18:56 
Sinoid
Работает. Возможно переменная не будет меняться в цикле, почитайте доки на For.

А зачем вы, кстати, кодовую страницу меняете?

-- 06.05.2018, 19:04 --

Sinoid
Ещё call может вызывать не внешний файл а переходить к подпрограмме (метке) в текущем, причем в подпрограмму можно передать параметры. Почитайте доки про call.

 
 
 
 Re: Запуск батника с параметром
Сообщение06.05.2018, 20:22 
wrest в сообщении #1310483 писал(а):
Работает

Прям батник из батника?
wrest в сообщении #1310483 писал(а):
А зачем вы, кстати, кодовую страницу меняете?

Так вот из-за этого
Sinoid в сообщении #1310482 писал(а):
в результате файл 1.txt совпадает с логом только в первых 19 строках (лога), за исключением одной строки.

и меняю: боюсь, что в общий текстовой файл что-нибудь не скопируется. Может, хоть как-то подстрахует, хотя, конечно, на содержании общего файла это, скорее всего, не отразится.
wrest в сообщении #1310483 писал(а):
Ещё call может вызывать не внешний файл а переходить к подпрограмме (метке) в текущем


Так в моих же батниках, вроде, меток нет.
А все-таки, вы что-нибудь знаете про
Sinoid в сообщении #1310448 писал(а):
несколько команд можно сцеплять &-ом

?

 
 
 [ Сообщений: 79 ]  На страницу 1, 2, 3, 4, 5, 6  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group