Je sais que dans le monde Unix, si vous éditez votre fichier .profile ou .cshrc, vous pouvez créer une source ~/.profile ou source ~/.cshrc pour obtenir l’effet sur votre session en cours. Si j'ai modifié quelque chose dans la variable système sous Windows, comment puis-je l'affecter à la session d'invite de commande en cours sans quitter la session d'invite de commande et en ouvrir une autre?
Je crains que non, mais vous pouvez commencer à utiliser Powershell, qui prend en charge l’approvisionnement en points. Comme la fenêtre powershell est vraiment basée sur cmd, toutes vos commandes dos continueront de fonctionner, et vous obtiendrez une nouvelle puissance, beaucoup plus de puissance.
Dans l'invite de commande Windows habituelle (cmd.exe, par exemple), il suffit d'utiliser call mybat.bat
pour faire ce que je voulais. J'ai eu toutes les variables d'environnement qu'il avait définies.
Le DOS Shell prendra en charge les fichiers .bat contenant uniquement des affectations à des variables qui, une fois 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.
Les exemples suivants vous aideront à 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 fichier de commandes principal.
call env.bat
call print.bat
pause
Maintenant, print.bat
fichier batch pour imprimer les variables. Son contenu donné ci-dessous
echo %name%
La seule manière pour que cela fonctionne 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
La dernière cmd lancera une nouvelle invite avec les paramètres souhaités exportés vers la fenêtre de commande.
Voici une solution de contournementpour certains cas d'utilisation limités. Vous pouvez lire 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
- commande à partir d'un fichier texte. Vous devrez tester quelles commandes sourced de cette manière. Quelques essais ont été nécessaires pour définir certaines variables d'environnement.
Je ne pense pas que nous puissions faire de la logique ou des boucles car le processeur de commande analyse le fichier au début. Je suis juste d'avoir une solution de contournement simple pour réutiliser des éléments partagés tels que 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.