powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / как в батнике считать все аргументы полученные в cmd ?
39 сообщений из 39, показаны все 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
как в батнике считать все аргументы полученные в cmd ?
    #34973304
Dayroon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrik
просто интересно возможно ли технически
Сейчас думаю, что нет.
Первого числа будет пара свободных часов на работе, если не забуду, попробую еще.
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34973456
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Biz©

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

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

желаемый результат не вышел( опять числа
ХРюша СП2:
qq.cmd
Код: plaintext
1.
2.
3.
4.
5.
@echo off
for /l %%i in ( 1 , 1 , 9 ) do (
           echo @echo arg%%i=%%%%i  > __xx.cmd
           call __xx.cmd %*
           )
del __xx.cmd
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
c:\Temp>qq.cmd q1 q2 q3 q4 q5 q6 q7
arg1=q1
arg2=q2
arg3=q3
arg4=q4
arg5=q5
arg6=q6
arg7=q7
arg8=
arg9=
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34974806
Dayroon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Biz©
ХРюша СП2:...

w2k sp4, w2k3 тоже работает, но ИМХО, %* все же корректнее и удобнее.
В одном батнике %%%%i, ИМХО, не развернуть до значения параметра
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34975009
Biz©
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dayroon Biz©
ХРюша СП2:...

w2k sp4, w2k3 тоже работает, но ИМХО, %* все же корректнее и удобнее.
В одном батнике %%%%i, ИМХО, не развернуть до значения параметра
я отвечал на конкретное требование - получить значение аргумента, номер которого берётся из переменной цикла for ...
пользование %* ессно удобнее ... да и необходимость реализации указанного выше требования именно через for трудно представить в реальности :)
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34975189
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не знаток, но попробуйте

выводит результат 1 и 3 аргумента
Код: plaintext
1.
@echo off
for %%i In (% 1 ,% 3 ) do echo %%i

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34975310
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKotне знаток, но попробуйте

выводит результат 1 и 3 аргумента
Код: plaintext
1.
@echo off
for %%i In (% 1 ,% 3 ) do echo %%i

I Have Nine Lives You Have One Only
THINK!

это мало чем отличается от:
Код: plaintext
for %%i In (%*) do
к тому же нельзя задать диапазон значений
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34975340
Dayroon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKotне знаток, но попробуйте

выводит результат 1 и 3 аргумента
Код: plaintext
1.
@echo off
for %%i In (% 1 ,% 3 ) do echo %%i


Это тоже работает, но топикстартер "хочет странного" (с)
Ему хочется именно через for (1,1,10).
А так, саму задачу уже решили и несколько раз.
Biz©

пользование %* ессно удобнее ... да и необходимость реализации указанного выше требования именно через for трудно представить в реальности :)

Именно эту мысль и пытался донести до автора. Процитировал Вас, дабы подтвердить автору, что на остальной линейке ОС, Ваше решение тоже работает
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #34975810
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо огромное, мне просто было любопытно знать об этом варианте. Синтаксис языка несколько странный для меня, столкнулся впервые, с одной стороны строгий (следит за пробелами и расположением скобок), с другой стороны расхлябанный, логика непоследовательная, трудно угадать как сделать что-либо, не воспользовавшись хелпом. Давайте закроем уже тему, а то чувствую, надоел :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
как в батнике считать все аргументы полученные в cmd ?
    #37083253
Фотография Gabit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток.

Надо прервать цикл, при достижения определенного значения.
Цикл открыт на основе количества файлов.
Сделал так, но цикл не прервался:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
set n_max =  2 
set Dir1=C:\Windows\Temp\

set n_cnt=
@for /f "" %%i in ('dir /B /d "%Dir1%*.*"') do (
  set /a n_cnt=n_cnt+ 1 
  if "%%n_cnt" == n_max goto exit
)
echo %n_cnt% > test.txt

:exit


Подскажите пожалуйста, в чем ошибка ?
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #37083904
Фотография Gabit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Накопление внутри цикла не показывает:
Код: plaintext
1.
2.
3.
4.
5.
6.
set n_cnt= 0 
@for /f "" %%i in ('dir /B /d "%Dir1%*.*"') do (
set /a n_cnt=n_cnt +  1 
echo %n_cnt%
)
echo %n_cnt%
показывает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 0 
 0 
 0 
 0 
 0 
 0 
 0 
 0 
 0 
 0 

 10 
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #37084002
Фотография Gabit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как тогда прервать непонятно.
...
Рейтинг: 0 / 0
как в батнике считать все аргументы полученные в cmd ?
    #37141196
-=Dark=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С помощью команд IF и SHIFT можно в цикле обрабатывать все параметры командной строки файла, даже не зная заранее их количества. Например, следующий командный файл (назовем его primer.bat) выводит на экран имя запускаемого файла и все параметры командной строки:
@ECHO OFF
ECHO Выполняется файл: %0
ECHO.
ECHO Файл запущен со следующими параметрами...
REM Начало цикла
:BegLoop
IF -%1==- GOTO ExitLoop
ECHO %1
REM Сдвиг параметров
SHIFT
REM Переход на начало цикла
GOTO BegLoop
:ExitLoop
REM Выход из цикла
ECHO.
ECHO Все.

Если запустить primer.bat с четырьмя параметрами:
primer.bat А Б В Г

то в результате выполнения на экран выведется следующая информация:
Выполняется файл: primer.bat

Файл запущен со следующими параметрами:
А
Б
В
Г

Все.
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / Windows [игнор отключен] [закрыт для гостей] / как в батнике считать все аргументы полученные в cmd ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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