0
Avec un fichier% v% présent txt, ce fichier batch:Pourquoi cette commande canalisée échoue-t-elle?
PROMPT $g
SET v="d"
FOR %%F IN ("*.txt") DO (TYPE "%%F" )
FOR %%F IN ("*.txt") DO (SORT "%%F" )
FOR %%F IN ("*.txt") DO (TYPE "%%F" | SORT)
produit
>PROMPT $g
>SET v="d"
>FOR %F IN ("*.txt") DO (TYPE "%F" )
>(TYPE "%v%.txt" )
content
>FOR %F IN ("*.txt") DO (SORT "%F" )
>(SORT "%v%.txt" )
content
>FOR %F IN ("*.txt") DO (TYPE "%F" | SORT )
>(TYPE "%v%.txt" | SORT )
The system cannot find the file specified.
>
Pourquoi « Le système ne peut pas trouver le fichier spécifié » à partir de seulement la ligne ayant la commande courante?
tout à fait raison. La commande est d'abord analysée dans l'instance 'cmd' exécutant le fichier batch (' %% F ->% v% .txt'). Chaque côté du canal est géré par une nouvelle instance 'cmd' distincte qui analyse ('% v% .txt -> "d" .txt') et exécute la commande. –
@MC ND, Wow, c'est idiot. Comment était-ce jamais prévu de travailler, je me demande ?? Merci. – ChrisJJ
@ChrisJJ, les tuyaux connectent le sdtout du * processus * du côté gauche au stdin du * processus * du côté droit. Bien que n'étant pas la seule solution, elle a été implémentée de cette façon depuis les premières versions d'Unix et c'est ainsi que les shell comme Bash l'implémentent aujourd'hui. Cela fonctionne, mais il y a des bizarreries qui vous mordent parfois. –