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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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%!