我知道在unix世界中,如果编辑.profile或.cshrc文件,可以使用source~ / .profile或source~ / .cshrc来获取当前会话的效果。如果我在Windows上更改了系统变量中的某些内容,如何在不退出命令提示符会话并打开另一个命令提示符会话的情况下使其影响当前的命令提示符会话?
答案 0 :(得分:40)
在通常的Windows命令提示符(即cmd.exe)中,只使用call mybat.bat
做了我想要的。我得到了它设置的所有环境变量。
答案 1 :(得分:12)
dos shell将支持仅包含变量赋值的.bat文件,这些变量在执行时将在当前环境中创建变量。
c:> type EnvSetTest.bat
set TESTXYZ=XYZ
c:> .\EnvSetTest.bat
c:> set | find "TESTX"
TESTXYZ=XYZ
c:>
IHTH。
答案 2 :(得分:6)
我不敢,但你可以开始使用支持点源的Powershell。由于powershell窗口实际上是基于cmd所以你所有的dos命令都将继续工作,你获得新的能量,更多的力量。
答案 3 :(得分:3)
以下示例将帮助您解决问题。
env.bat
此文件用于设置变量。它的内容是打击的。
set name="test3"
test.bat
我们的主要批处理文件。
call env.bat
call print.bat
pause
现在print.bat
批处理文件来打印变量。其内容见下文
echo %name%
答案 4 :(得分:1)
我发现这个工作的唯一方法是从我自己的配置窗口启动一个新的cmd窗口。例如:
@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
最后一个cmd将启动一个新的cmd提示符,并将所需的设置导出到命令窗口。
答案 5 :(得分:0)
这是针对某些有限用例的解决方法。您可以读入命令文件并在线执行它们。例如,调用命令文件如下所示:
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
:
在setup-java.bat
文件中,您无法使用%
扩展。你需要使用!
; e.g:
set JRE_HOME=!JRE_08!
rem
set JRE_TARGET=!JRE_HOME!
所以你是文本文件中的source
- 命令。您需要以这种方式测试 sourced 的命令。只需要进行一些试验来设置一些环境变量。
我不认为我们可以执行逻辑或循环,因为命令处理器在开始时扫描文件。我只是有一个简单的解决方法来重用环境定义等共享的东西。大多数其他事情不需要实际的source
命令(我希望)。祝你好运。
答案 6 :(得分:-1)
例如设置VC#vars
C:\Windows\System32\cmd.exe /k "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
答案 7 :(得分:-4)
使用git bash for windows,它完全正常!