Emulation des sous-expressions
salut,
les Shells comme Bash/KSH/PS et autres implémentent une fonctionnalité puissantes qui s'appelle les "sous-expression", techniquement, cette fonctionnalité permet de créer un environnemnt temporaire pour executer n'importe quelle commande...et si on affecte à cet sub-expression une variable, la sortie sera injecter dans cette variable..
exemple:
Code:
1 2 3
| $psh=get-childItem
$bsh=$(ls) |
cette notion de sub-expression n'existe pas dans cmd.exe.
Il existe une commande externe (export.exe) qui permet d'emuler les sous-expression mais elle ne permet d'afficher que la première ligne de la commande passé comme argument:
Code:
1 2
| export var=`date`
echo %date% |
on peux en bricollant un peux trouver des solutions. par exemple, utiliser des fichiers temporaires...mais on perdera tout le sens des sub-expression..
heureusement, Et puisque rien n'est impossible, voici une un petit code, simple mais puissant...qui nous aidera à travailler plus aisemment avec cmd.exe.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| @echo off
:: export <variable> <command>
:: export cmd dir
:: export var "type c:\fichier.txt"
::
set var=%1
set cmd=%~2
(Set LF=^
)
Setlocal EnableDelayedExpansion
for /f "delims=" %%o in ('!cmd!') do (set %var%=!%var%!%%o!LF!)
echo !%var%! |