Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Перенос строки в cmd "for in () do @( )" (http://forum.oszone.net/showthread.php?t=343307)

shadowbat 16-12-2019 13:39 2900690

Перенос строки в 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

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

alpap 16-12-2019 15:38 2900714

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

Цитата shadowbat
внедрить туда перенос строки »

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

@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 2900717

Цитата:

Цитата alpap
^&^ »

без кавычек работает
Код:

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 16-12-2019 17:14 2900730

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 2900736

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 16-12-2019 18:35 2900746

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

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



Время: 16:26.

Время: 16:26.
© OSzone.net 2001-