Войти

Показать полную графическую версию : [решено] Простой вопрос по синтаксису


apozlevich
18-10-2012, 19:23
Продолжаем изучение bat'а по советам на форуме
Вот если надо заменить одну подстроку на другую в переменной - надо писать примерно так: %var:1=2%
А вот что делать с аргументами? (Которые %1, %2 и т.д.). Пробую %2:1=2 - ругается.

Конечно, как вариант из одного сделать другое, но это не комильфо :)

Iska
18-10-2012, 19:45
Например:
@echo off
setlocal enableextensions enabledelayedexpansion

set sArgString=%~1
set sArgWhatFind=%~2
set sArgReplaceBy=%~3

if defined sArgString (
if defined sArgWhatFind (
if defined sArgReplaceBy (
set sArgString=!sArgString:%sArgWhatFind%=%sArgReplaceBy%!
echo !sArgString!
) else (
call :Usage
exit /b 3
)
) else (
call :Usage
exit /b 2
)
) else (
call :Usage
exit /b 1
)

endlocal
exit /b 0

:Usage
echo Usage: %~nx0 ^<String^> ^<What find^> ^<Replace by^>
exit /b 0

E:\>0001.cmd "Мама мыла раму" Мама Папа
Папа мыла раму

gora
18-10-2012, 19:47
из одного сделать другое, но это не комильфо »
Однако другого варианта я не знаю. И аргументы и переменные цикла сначала нужно превратить в "простую" переменную, а потом делать с последней все задуманные манипуляции.




© OSzone.net 2001-2012