2012-08-13 7 views
1

J'ai un programme qui lance une console cmd avec un certain environnement. Le problème que la console est lancée en cliquant sur un bouton, donc je ne peux pas créer un lanceur personnalisé par moi-même avec cet environnement. Ce que je veux: Étant donné un fichier avec un ensemble de variables (généré par la commande set set dans le cmd lancé personnalisé), je veux configurer l'environnement dans la console cmd actuelle en lisant ce fichier.windows cmd environnement

Exemple:

in.txt (notez les espaces dans la même vars sur le côté droit):

var1=c:\program files 
path=c:\;c:\bin 
var2=d:\folder with libs 

Après l'exécution du script comme: ./script.sh in.txt l'environnement dans la console actuelle de cmd devrait être (sortie après l'exécution de la commande set):

var1=c:\program files 
path=c:\;c:\bin 
var2=d:\folder with libs 

Remarque: les scripts bash peut être utilisé à l'intérieur du script tant que l'environnement est situé.

Répondre

0

Je manged pour écrire le script de travail suivant:

  • Utilisation: script.bat nom_fichier
  • Si nom_fichier non fourni imprime utilisation
  • crée un fichier de sauvegarde envbkp.bat avec des variables d'environnement avant de les supprimer pour restaurer possible

    @echo off 
    
    set _exitStatus=0 
    set _argcActual=0 
    set _argcExpected=1 
    
    echo. 
    
    for %%i in (%*) do set /A _argcActual+=1 
    
    if %_argcActual% NEQ %_argcExpected% (
        call :_ShowUsage %0% 
        set _exitStatus=1 
        goto:_EOF 
    ) 
    
    set _exitStatus= 
    set _argcActual= 
    set _argcExpected= 
    
    if exist ".\envbkp.bat" del ".\envbkp.bat" 
    echo @echo off > envbkp.bat 
    for /f "tokens=1* delims==" %%a in ('set') do (
        echo set %%a=%%b>> .\envbkp.bat 
        set %%a= 
    ) 
    
    for /f "tokens=1* delims==" %%a in ('type %~1') do (
        set %%a=%%b 
    ) 
    goto:_EOF 
    
    :_ShowUsage 
        echo [USAGE]: %~1 env_file 
        echo. 
    if NOT "%~2" == "" (
        echo %~2 
        echo. 
    ) 
    goto:eof 
    
    :_EOF 
    
0

Renommez in.txt à In.bat alors le contenu devrait être:

set var1=c:\program files 
set path=c:\;c:\bin 
set var2=d:\folder with libs 

et exécuter In.bat