【发布时间】:2012-05-11 06:09:01
【问题描述】:
我知道在 unix 世界中,如果您编辑 .profile 或 .cshrc 文件,则可以执行 source ~/.profile 或 source ~/.cshrc 以对当前会话产生影响。如果我在 Windows 上更改了系统变量中的某些内容,如何在不退出命令提示符会话并打开另一个命令提示符会话的情况下使其影响当前的命令提示符会话?
【问题讨论】:
标签: windows bash unix cmd tcsh
我知道在 unix 世界中,如果您编辑 .profile 或 .cshrc 文件,则可以执行 source ~/.profile 或 source ~/.cshrc 以对当前会话产生影响。如果我在 Windows 上更改了系统变量中的某些内容,如何在不退出命令提示符会话并打开另一个命令提示符会话的情况下使其影响当前的命令提示符会话?
【问题讨论】:
标签: windows bash unix cmd tcsh
以下示例将帮助您解决问题。
env.bat 该文件用于设置变量。它的内容受到打击。
set name="test3"
test.bat 我们的主要批处理文件。
call env.bat
call print.bat
pause
现在print.bat 批处理文件打印变量。其内容如下
echo %name%
【讨论】:
在 windows 上使用 git bash,效果很好!
【讨论】:
以下是一些有限用例的解决方法。您可以读入命令文件并在线执行它们。例如调用命令文件如下所示:
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 文件中,您不能使用% 扩展。您需要使用!;例如:
set JRE_HOME=!JRE_08!
rem
set JRE_TARGET=!JRE_HOME!
所以你是从文本文件中获得source-ing 命令。您将需要以这种方式测试哪些命令来源。只是为了设置一些环境变量而进行了几次试验。
我认为我们不能执行逻辑或循环,因为命令处理器会在开始时扫描文件。我只是有一个简单的解决方法来重用环境定义等共享的东西。大多数其他事情不需要实际的source 命令(我希望)。祝你好运。
【讨论】:
在通常的 Windows 命令提示符(即 cmd.exe)中,只需使用 call mybat.bat 即可完成我想要的操作。我得到了它设置的所有环境变量。
【讨论】:
call他们允许执行返回到当前脚本。
call 但是不适用于 powershell 脚本。假设您要导入一个函数并调用它,source 将在 bash 中工作
例如设置 VC# vars
C:\Windows\System32\cmd.exe /k "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
【讨论】:
我发现这个工作的唯一方法是从我自己的配置窗口启动一个新的 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 提示符,并将所需设置导出到命令窗口。
【讨论】:
dos shell 将支持仅包含对变量的赋值的 .bat 文件,这些变量在执行时将在当前环境中创建变量。
c:> type EnvSetTest.bat
set TESTXYZ=XYZ
c:> .\EnvSetTest.bat
c:> set | find "TESTX"
TESTXYZ=XYZ
c:>
IHTH。
【讨论】:
恐怕不行,但您可以开始使用支持点源的 Powershell。由于 powershell 窗口实际上是基于 cmd 的,所以你所有的 dos 命令都将继续工作,并且你获得了新的权力,更多的权力。
【讨论】: