2010-06-02 2 views
3

Je souhaite écrire un fichier batch qui récupère le contenu d'un fichier et remplace toutes les références de variable d'environnement dans le fichier par les valeurs réelles de la variable d'environnement. Est-ce possible? En gros, si un fichier a ceci:Script batch Windows pour remplacer les variables d'environnement dans un fichier

%PROGRAM FILES%\Microsoft SQL Server\ 

alors je veux le contenu du fichier à devenir:

C:\Program Files\Microsoft SQL Server\ 

après le script batch couru. Ceci est juste un exemple, mais je veux que toutes les variables d'environnement soient étendues. Merci d'avance pour votre aide!

Répondre

2

Si Powershell est présent sur le système, vous pouvez faire:

powershell -command "get-content 'input.txt' | foreach { [System.Environment]::ExpandEnvironmentVariables($_) } | set-content -path 'output.txt'" 

Les travaux suivants avec un fichier batch simple, bien que les lignes vides sont retirées de la sortie

@echo off 
goto :start 

:expand 
echo %~1 >> output.txt 
goto:eof 

:start 
echo. > output.txt 
for /f "delims=" %%i in (input.txt) do call:expand "%%i" 
Questions connexes