Existe-t-il une commande source équivalente dans Windows CMD comme dans bash ou tcsh?

Je sais que dans le monde unix, si vous modifiez votre .de profil ou de .fichier cshrc, vous pouvez faire une source ~/.de profil ou de la source ~/.cshrc pour obtenir l'effet sur votre session actuelle. Si j'ai changé quelque chose dans la variable système sous Windows, Comment puis-je avoir un effet sur la session d'invite de commande en cours sans quitter la session d'invite de commande et ouvrir une autre session d'invite de commande?

22
demandé sur eryksun 2012-05-01 22:33:19

8 réponses

Je crains que non, mais vous pouvez commencer à utiliser Powershell, qui prend en charge l'approvisionnement par points. Étant donné que la fenêtre powershell est vraiment basée sur cmd, toutes vos commandes dos continueront à fonctionner, et vous gagnerez de nouvelles puissances, beaucoup plus de puissance.

5
répondu johnshen64 2012-05-01 18:40:20

Dans l'invite de commande Windows habituelle (c.-à-d. cmd.exe), juste en utilisant call mybat.bat a fait ce que je voulais. J'ai toutes les variables d'environnement qu'il avait définies.

32
répondu Eike 2018-03-16 09:05:52

Le shell dos prendra en charge .Fichiers bat contenant uniquement des affectations à des variables qui, lorsqu'elles sont exécutées, créeront les variables dans l'environnement actuel.

  c:> type EnvSetTest.bat
  set TESTXYZ=XYZ

  c:> .\EnvSetTest.bat

  c:> set | find "TESTX"
  TESTXYZ=XYZ
  c:>

IHTH.

12
répondu shellter 2013-02-19 11:27:34

La seule façon dont j'ai trouvé cela pour fonctionner est de lancer une nouvelle fenêtre cmd à partir de ma propre fenêtre de configuration. par exemple:

@echo off
echo Loading...
setlocal enabledelayedexpansion
call 1.cmd
call 2.bat
...
...
if "%LocalAppData%"=="" set LocalAppData=%UserProfile%\Local Settings\Application Data
SET BLAHNAME=FILE:%LocalAppData%\BLAH
call blah blah
cmd

Le Dernier cmd lancera une nouvelle invite cmd avec les paramètres souhaités exportés vers la fenêtre de commande.

1
répondu Ajay Gautam 2013-04-25 17:13:45

Voici une solution de contournement pour certains cas d'utilisation limités. Vous pouvez lire dans un fichier de commandes et les exécuter en ligne. Par exemple, le fichier de commande appelant ressemble à:

echo   OFF
SETLOCAL  ENABLEDELAYEDEXPANSION
     :
echo.         ----------------
echo.           set-up java
echo.         ----------------
echo.
rem       call    %DEV_SCRIPTS%\setup-java
for /F "tokens=*" %%A in ( %DEV_SCRIPTS%\setup-java.bat ) do (
    %%A
)        
call    %DEV_SCRIPTS%\show-java
     :

Dans le fichier setup-java.bat, vous ne pouvez pas utiliser l'extension %. Vous devez utiliser !; par exemple:

    set  JRE_HOME=!JRE_08!
    rem        
    set  JRE_TARGET=!JRE_HOME!

Donc, vous êtes littéralement source-ing commandes à partir d'un fichier texte. Vous devrez tester les commandes sourced de cette façon. Il a fallu quelques essais juste pour définir des variables d'environnement.

Je ne pense pas que nous puissions faire de la logique ou des boucles car le processeur de commande scanne le fichier au début. Je suis OK juste avoir une solution de contournement simple pour réutiliser des choses partagées comme les définitions d'environnement. La plupart des autres choses n'auront pas besoin d'une commande source réelle ( j'espère ). Bonne chance.

0
répondu will 2018-06-07 00:31:58

Exemple Suivant vous aidera à résoudre votre problème.

env.bat Ce fichier sert à définir des variables. Son contenu est donné coup.

set name="test3"

test.bat Notre principal fichier de commandes.

call env.bat
call print.bat
pause

Maintenant print.bat fichier batch pour imprimer les variables. Son contenu donné ci-dessous

echo %name%
0
répondu Fathah Rehman P 2018-06-11 07:31:26

Par exemple pour définir VC # vars

C:\Windows\System32\cmd.exe /k "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
-1
répondu elGuru 2014-05-07 19:22:17

Utilisez git bash pour windows, cela fonctionne très bien!

-2
répondu Adwait_07 2018-06-11 07:26:22