Si vino aquí en busca de una respuesta a esta pregunta, pero no exactamente de la manera en que se refería el OP, es decir, ¿cómo consigue que funcione la CMD multilínea en una sola línea? Tengo una especie de respuesta peligrosa para usted.
Intentar usar esto con cosas que realmente usan tuberías, como por ejemplo, findstr
es bastante problemático. Lo mismo vale para tratar con el else
s. Pero si solo desea que un comando condicional de varias líneas se ejecute directamente desde CMD y no a través de un archivo por lotes, esto debería funcionar bien.
Digamos que tiene algo como esto en un lote que desea ejecutar directamente en el símbolo del sistema:
@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"
)
)
Ahora, podría usar el quilate de continuación de línea ( ^
) y escribirlo manualmente de esta manera, pero advirtiendo, es tedioso y si comete un error puede aprender la alegría de volver a escribir todo.
Bueno, no puede funcionar con sólo ^
gracias a escapar de los mecanismos dentro de paréntesis, encogimiento de hombros , al menos no como escrita. En realidad, debería duplicar los quilates de esta manera:
@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"))
En cambio, puede ser un scripter astuto sucio del lado equivocado de las pistas que no necesita quilates intercambiándolos por un solo tubo ( |
) por continuación de un bucle / expresión:
@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"