powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / как в батнике считать все аргументы полученные в cmd ?
25 сообщений из 39, страница 1 из 2
как в батнике считать все аргументы полученные в cmd ?
    #34971470
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как в батнике считать все аргументы полученные в cmd ?
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34971480
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrikкак в батнике считать все аргументы полученные в cmd ?
точнее параметры, мне нужно определить, был ли это запуск с парамтром /v, если нет, то перезапуститься с этим параметром.
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34971687
Dayroon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все параметры батника(%1 - %N), кроме имени батника(%0) , это %* - попробуй расковырять for ом
Удачи!
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34971857
MZH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть также команда shift, которую можно использовать для перебора списка параметров.
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34971958
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DayroonВсе параметры батника(%1 - %N), кроме имени батника(%0) , это %* - попробуй расковырять for ом
Удачи!

вариант конечно не очень, т.к. заранее я не заню сколько будет N, но все равно интересно сделать, но что-то не получается, не могу ему объяснить, что имею ввиду под %*

пробовал так:
Код: plaintext
1.
2.
3.
@echo off
 
for /l %%f in ( 0 , 1 , 10 ) do echo %%~f
но получаю список цифр, а как их преобразовать в параметры при выводе? 0 используя специально, т.к. пока запускаю без единого параметра.
подскажите, если не трудно

пока попробую поковырять shift
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34972035
MZH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разве переменные запрашиваются не через %VAR%?
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34972072
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MZHРазве переменные запрашиваются не через %VAR%?

можно пример?
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34972238
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще вопрос: как-нидь можно прервать цикл for кроме как goto ?
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34972254
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
получилось так:



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@echo off

:start 
shift 
if "%0"=="" goto end 
echo % 0  
goto start 

:end 
echo All done

но оч. интересно, как это сделать с циклом for, еще не нравится, что shift смещает параметры и утрачивает их значение
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34972299
Crazy_Driver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заканчивайте писать батники и переходите на WSH - там можно делать гораздо больше и без лишних выкрутасов. На выбор два языка: JScript и VBScript
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34972310
Dayroon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
@echo off
@for %%f in (%*) @echo %%f
Примерно так.
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34972417
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dayroon
Код: plaintext
1.
@echo off
@for %%f in (%*) @echo %%f
Примерно так.

подправил, работает, спасибо!

Код: plaintext
1.
2.
@echo off
for %%f in (%*) do echo %%f

но оч. хочу знать, будет ли возможно так заставить его отображать вместо цифр аргументы, просто интересно, да и может где пригодится:
Код: plaintext
1.
2.
3.
@echo off
 
for /l %%f in ( 0 , 1 , 10 ) do echo %%~f

и как прерывать цикл?
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34972775
Dayroon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrik

подправил, работает, спасибо!

Пользуйся
Tubrik
но оч. хочу знать, будет ли возможно так заставить его отображать вместо цифр аргументы, просто интересно, да и может где пригодится:
Код: plaintext
1.
2.
3.
@echo off
 
for /l %%f in ( 0 , 1 , 10 ) do echo %%~f

С ходу не скажу, а упражняться лень.
Не понимаю, зачем у тебя там тильда? Она нужна, имхо, для модификаторов, которые обычно работают только для путей и имен файлов.
Tubrik
и как прерывать цикл?

Не задумывался, с ходу в голову лезет только трехэтажный IF:
Код: plaintext
1.
2.
3.
 @setlocal enabledelayedexpansion
@echo off
@SET VAR= 0 
for %%f in (%*) do if not !VAR!== 1   (if %%f==/v SET VAR= 1 &&echo %%f&&echo %VAR%)
Пишу из головы, прошу не пинать.
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34972827
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тильду можно убрать

а что тут прервет цикл?

я вообще имею ввиду любой цикл
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34972853
Dayroon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrikтильду можно убрать

Ну и попробуй, мне лениво пробовать.
Tubrik
а что тут прервет цикл?
я вообще имею ввиду любой цикл
Я же говорю, не задумывался, в голову пришло только "холостое" выполнение.
Может, кто подскажет еще..
По хорошему, справку надо изучать, м.б. MSDN почитать. С виндой неплохая справка по командам CMD идет...
P.S.
Недодумал пример, нагляднее так:
Код: plaintext
1.
2.
3.
4.
@setlocal enabledelayedexpansion
@echo off
@SET VAR= 0 
for %%f in (%*) do if not !VAR!== 1   (if %%f==/v SET VAR= 1 &&echo %%f&&echo !VAR!)
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34972913
Biz©
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DayroonНе понимаю, зачем у тебя там тильда? Она нужна, имхо, для модификаторов, которые обычно работают только для путей и имен файлов.
не только ... в одиночестве она удаляет обрамляющие кавычки ... например полезно если возможны параметры с пробелами ...
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34973008
Biz©
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qq.cmd@echo off
set /a c=1
set _arg0=%~f0
for %%i in (%*) do call :q1 %%i
set _arg
goto :EOF

:q1
if not "%~1" == "" set _arg%c%=%~1
set /a c=c+1
goto :EOF


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 c:\Temp>qq.cmd 1 2 3 4 "aa bb cc" 6 "" 8
_arg0=c:\Temp\qq.cmd
_arg1=1
_arg2=2
_arg3=3
_arg4=4
_arg5=aa bb cc
_arg6=6
_arg8=8 
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34973033
Biz©
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrikи как прерывать цикл?
например так
Код: plaintext
1.
2.
3.
4.
@echo off
for /l %%i in ( 0 , 1 , 10 ) do (
       if "%%i" == "6" goto :EOF
       echo %%i
       )
Код: plaintext
1.
2.
3.
4.
5.
6.
c:\Temp>qqq
0
1
2
3
4
5
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34973043
Biz©
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Biz© Tubrikи как прерывать цикл?
например так
Код: plaintext
1.
2.
3.
4.
@echo off
for /l %%i in ( 0 , 1 , 10 ) do (
       if "%%i" == "6" goto :EOF
       echo %%i
       )
Код: plaintext
1.
2.
3.
4.
5.
6.
c:\Temp>qqq
0
1
2
3
4
5

наврал ... :EOF на цикле оборвёт задание вообще ...
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34973121
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, понял, остался еще один вопрос:

с помощью ТАКОГО цикла можно перечислить аргументы:

Код: plaintext
1.
2.
3.
@echo off
echo % 0 
for %%i in ( 3 , 4 , 5 ) do echo %%i

т.е. меня интересует как из ТАКОЙ i по ее значению извлечь соотв. аргумент? ну т.е. по ее содержимому, что есть число :)
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34973269
Biz©
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrikт.е. меня интересует как из ТАКОЙ i по ее значению извлечь соотв. аргумент? ну т.е. по ее содержимому, что есть число :)
Код: plaintext
1.
2.
3.
4.
@echo off
for /l %%i in ( 0 , 1 , 9 ) do (
           echo @echo arg%%i=%%%%i  > __xx.cmd
           call __xx.cmd %*
           )             
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34973273
Biz©
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
суть в том что переменная раскрывается _один_ раз ... рекурсии нет ...
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34973290
Dayroon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrikи как прерывать цикл?
Biz©
например так
Код: plaintext
1.
2.
3.
4.
@echo off
for /l %%i in ( 0 , 1 , 10 ) do (
       if "%%i" == "6" goto :EOF
       echo %%i
       )
наврал ... :EOF на цикле оборвёт задание вообще ...
Дык, ежели по условию, то немного выше -
Tubrik
еще вопрос: как-нидь можно прервать цикл for кроме как goto ?

Biz©
не только ... в одиночестве она удаляет обрамляющие кавычки ... например полезно если возможны параметры с пробелами ...

Спасибо, не знал.
Tubrik
т.е. меня интересует как из ТАКОЙ i по ее значению извлечь соотв. аргумент? ну т.е. по ее содержимому, что есть число :)

А нафига?
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34973295
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dayroon
А нафига?

просто интересно возможно ли технически
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34973303
Biz©
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Biz© Tubrikт.е. меня интересует как из ТАКОЙ i по ее значению извлечь соотв. аргумент? ну т.е. по ее содержимому, что есть число :)
Код: plaintext
1.
2.
3.
4.
@echo off
for /l %%i in ( 0 , 1 , 9 ) do (
           echo @echo arg%%i=%%%%i  > __xx.cmd
           call __xx.cmd %*
           )             

вернее так
Код: plaintext
1.
2.
3.
4.
@echo off
for /l %%i in ( 1 , 1 , 9 ) do (
           echo @echo arg%%i=%%%%i  > __xx.cmd
           call __xx.cmd %*
           )             
а с %0 воевать отдельно вне цикла
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / Windows [игнор отключен] [закрыт для гостей] / как в батнике считать все аргументы полученные в cmd ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]