Si vous êtes venu ici à la recherche d'une réponse à cette question mais pas exactement de la manière dont l'OP le signifiait, c'est-à-dire comment faire fonctionner le CMD multiligne en un seul ligne, j'ai une sorte de réponse dangereuse pour vous.
Essayer de l'utiliser avec des choses qui utilisent réellement la tuyauterie, comme par exemple, findstr
est assez problématique. Il en va de même pour l'examen de l' else
art. Mais si vous voulez juste qu'une commande conditionnelle multiligne s'exécute directement à partir de CMD et non via un fichier de commandes, cela devrait bien fonctionner.
Disons que vous avez quelque chose comme ça dans un lot que vous souhaitez exécuter directement dans l'invite de commande:
@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"
)
)
Maintenant, vous pouvez utiliser le carat de continuation de ligne ( ^
) et le taper manuellement comme ceci, mais attention, c'est fastidieux et si vous vous trompez, vous pouvez apprendre la joie de tout taper à nouveau.
Eh bien, il ne fonctionnera pas avec seulement ^
grâce à échapper à des mécanismes de l' intérieur entre parenthèses de au moins pas écrit. Vous auriez en fait besoin de doubler les carats comme ceci:
@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"))
Au lieu de cela, vous pouvez être un scripteur sournois sale du mauvais côté des pistes qui n'ont pas besoin de carats en les échangeant contre un seul tube ( |
) par suite d'une boucle / expression:
@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"