Если вы пришли сюда в поисках ответа на этот вопрос, но не точно , как имел в виду OP, то есть, как заставить многострочную CMD работать в единственной строке У меня есть опасный ответ для тебя.
Попытка использовать это с вещами, которые фактически используют трубопровод, как, скажем, findstr
, довольно проблематична. То же самое относится и к else
с. Но если вы просто хотите, чтобы многострочная условная команда выполнялась непосредственно из CMD, а не через пакетный файл, это должно хорошо работать.
Допустим, у вас есть что-то вроде этого в пакете, который вы хотите запустить непосредственно в командной строке:
@echo off
for /r %%T IN (*.*) DO (
if /i "%%~xT"==".sln" (
echo "%%~T" is a normal SLN file, and not a .SLN.METAPROJ or .SLN.PROJ file
echo Dumping SLN file contents
type "%%~T"
)
)
Теперь вы можете использовать символ продолжения строки (^
) и вручную напечатать его вот так, но, предупреждающе, это утомительно, и если вы все испортите, вы можете научиться радости от того, что все это снова напечатаете. *
Ну, это не будет работать только с ^
благодаря механизмам экранирования внутри скобок пожимание плечами По крайней мере, не так, как написано. На самом деле вам нужно будет удвоить карат, например, так:
@echo off ^
More? for /r %T IN (*.sln) DO (^^
More? if /i "%~xT"==".sln" (^^
More? echo "%~T" is a normal SLN file, and not a .SLN.METAPROJ or .SLN.PROJ file^^
More? echo Dumping SLN file contents^^
More? type "%~T"))
Вместо этого вы можете быть грязным подлым сценаристом с неправильной стороны дорожек, для которых не нужно никаких каратов, заменяя их на один канал (|
) за продолжение цикла / выражения:
@echo off
for /r %T IN (*.sln) DO if /i "%~xT"==".sln" echo "%~T" is a normal SLN file, and not a .SLN.METAPROJ or .SLN.PROJ file | echo Dumping SLN file contents | type "%~T"