Показать полную графическую версию : [решено] Перенос строки в cmd "for in () do @( )"
shadowbat
16-12-2019, 13:39
Есть однострочный код
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
Если нельзя, то просто напишите что нельзя
shadowbat, я не могу только понять зачем там call
внедрить туда перенос строки »
в общем случае так:
@echo off
cmd /v/c "for %%a in (x) do set "z=%%a^"^&^
echo !z!"
pause
не зная вашей задачи определенно нельзя сказать как именно у вас будет, надо или экспериментировать или еще раз, точно знать задачу, кстати более чем уверен что cmd /v/c можно обойти и не будет проблемы однострочника.
shadowbat
16-12-2019, 16:02
^&^ »
без кавычек работает
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
shadowbat, невнимательно смотрели мой пример:
@echo off
cmd /v/c "for %%i in ("%CD%\*.txt") do @(call rename "%%i" "%%~ni1.txt^"^&^
call echo 1)"
pause
shadowbat
16-12-2019, 17:34
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
shadowbat, смысла не догнали? Все просто:
(простыми словами, последняя парная кавычка текущей строки хочет быть собственностью окончания функции команд cmd, а наша задача сделать это не так)
@echo off
cmd /v/c "for %%i in ("%CD%\*.txt^") do @(call echo 1^&^
call rename "%%i" "%%~ni1.txt")"
pause
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.