CMD/BAT - [решено] Перенос строки в cmd "for in () do @( )"

Ответить
Аватара пользователя
shadowbat

CMD/BAT - [решено] Перенос строки в cmd "for in () do @( )"

Сообщение shadowbat »

Есть однострочный код



Код:

Код: Выделить всё

cmd /v/c "for %%i in ("%CD%\*.txt") do @(call rename "%%i" "%%~ni1.txt" & call echo 1)"
pause

Как внедрить туда перенос строки, чтобы получилось что-то подобное?



Код:

Код: Выделить всё

cmd /v/c "for %%i in ("%CD%\*.txt") do @(call rename "%%i" "%%~ni1.txt" & ^
call echo 1)"
pause

Если нельзя, то просто напишите что нельзя
Аватара пользователя
alpap

Re: CMD/BAT - [решено] Перенос строки в cmd "for in () do @( )"

Сообщение alpap »

shadowbat, я не могу только понять зачем там call


Цитата shadowbat:



внедрить туда перенос строки
CMD/BAT - [решено] Перенос строки в cmd "for in () do @( )"




в общем случае так:



Код:

Код: Выделить всё

@echo off
cmd /v/c "for %%a in (x) do set "z=%%a^"^&^
echo !z!"
pause

не зная вашей задачи определенно нельзя сказать как именно у вас будет, надо или экспериментировать или еще раз, точно знать задачу, кстати более чем уверен что cmd /v/c[/i] можно обойти и не будет проблемы однострочника.
Аватара пользователя
shadowbat

Re: CMD/BAT - [решено] Перенос строки в cmd "for in () do @( )"

Сообщение shadowbat »

Цитата alpap:



^&^
CMD/BAT - [решено] Перенос строки в cmd "for in () do @( )"




без кавычек работает



Код:

Код: Выделить всё

cmd /v/c for %%i in ("%CD%\*.txt") do @(call rename "%%i" "%%~ni1.txt" ^&^
call echo 1)
pause

но в первом сообщении есть кавычки и с ними не работает



Код:

Код: Выделить всё

cmd /v/c "for %%i in ("%CD%\*.txt") do @(call rename "%%i" "%%~ni1.txt" ^&^
call echo 1)"
pause

как и этот вариант, не работает без кавычек и не работает с ^&^



Код:

Код: Выделить всё

cmd /v/c "for %%i in ("%CD%\*.txt") do @(set "E=%%~xi" ^&^
call echo "%%~ni_%%E:~1%%")"
pause
Аватара пользователя
alpap

Re: CMD/BAT - [решено] Перенос строки в cmd "for in () do @( )"

Сообщение alpap »

shadowbat, невнимательно смотрели мой пример:



Код:

Код: Выделить всё

@echo off
cmd /v/c "for %%i in ("%CD%\*.txt") do @(call rename "%%i" "%%~ni1.txt^"^&^
call echo 1)"
pause
Аватара пользователя
shadowbat

Re: CMD/BAT - [решено] Перенос строки в cmd "for in () do @( )"

Сообщение shadowbat »

alpap, прекрасно, всё работает после добавление третьей ^





Код:

Код: Выделить всё

cmd /v/c "for %%i in ("%CD%\*.txt") do @(call echo 1^"^&^
call rename "%%i" "%%~ni1.txt")"
pause

в таком коде результат выводится такой



Код:

Код: Выделить всё

1"
1"
1"

как перенести без кавычки? или перед переносом всегда должна стоять кавычка (^"^&^)?

пока временное решение - пустое echo как невидимый оператор переноса строки:



Код:

Код: Выделить всё

 & call @echo^"^&^



Код:

Код: Выделить всё

cmd /v/c "for %%i in ("%CD%\*.txt") do @(call echo 1 & call @echo^"^&^
call rename "%%i" "%%~ni1.txt")"
pause
Аватара пользователя
alpap

Re: CMD/BAT - [решено] Перенос строки в cmd "for in () do @( )"

Сообщение alpap »

shadowbat, смысла не догнали? Все просто:

(простыми словами, последняя парная кавычка текущей строки хочет быть собственностью окончания функции команд cmd, а наша задача сделать это не так)



Код:

Код: Выделить всё

@echo off
cmd /v/c "for %%i in ("%CD%\*.txt^") do @(call echo 1^&^
call rename "%%i" "%%~ni1.txt")"
pause
Ответить

Вернуться в «Скриптовые языки администрирования Windows»