Serge2005 по поводу for - for /?
по поводу %M:3% - set /?
коментарии к батнику смотри сюда:
[more]
коментарии лучше поудалять в самом бтнике, могут возникнуть траблы на пустом месте
Код: ; коментарии начинаются с тчк+зпт и идут следом за коментируемой строкой
del /q /s file1.txt > nul 2>&1
;удаляем на всякий случай выходной файл.
;> nul 2>&1 нужно для того что бы небыло на экране никаких сообщений об ошибках
for /f %%i in (file.txt) do call :L1 %%i
;для каждой строки из указанного файла переходим на метку L1 с передачей всей строки
;если в строке есть пробелы, то заключи %1 в двойные кавычки а после метки L1
;замени set L=%1 на set L=%~1
goto :eof
;выходим из программы сразу после перебора всех строк
:L1
;это метка для перехода на нее из любого места
;сюда попадаем для разбора каждой строки во входном файле.
;в данном случае из-за того что переходили на етку с помощью
;call :L1 строка
;%1 содержит всю строку
set L=%1
;в переменную L заносим всю строку
echo %L%>> file1.txt
;выводим строку в выходной файл
for /f "delims== tokens=1,*" %%j in (%L%) do (
; ЭТОТ КОМЕНТАРИЙ В БАТНИКЕ НЕ ОСТАВЛЯЙ - ПРОВЕРЕННО ЭТО ГРАБЛЯ
;разбиваем строку назодящююся в L на 2 части (tokens=1,*).
;разделителем служит = (delims==).
;Первая часть помещается в %%j,
;вторая и последующие в переменные по порядку: k, l, m, ... пока есть что помещать
if "%%k"="program_second" call :L2 %%j
;ну если после знака = в исходной строке идет то на что мы реагируем, то переходим на
;метку L2
;сюда, между двумя круглыми скобками, можно накидать несколько разных сравнений
;и соответственно переходов на разные метки
)
goto :eof
;если метка была вызвана с помощью CALL, то возвращаемся туда, откуда вызвали
;в противном случае выходим из батника вообще.
:L2
;аналогично :L1
set M=%1
;в М запоминаем входной параметр
set M=%M:3%
;в М записываем то что находится в М после третьего символа
;т.е. из cmd1234 получим в М 1234
echo cmd_new%M%=command>> file1.txt
;выводимм в выходной файл все что нам надо с учетом того что в M у нас есть номер
goto :eof
;см. выше по аналогии