Windows CMD中是否有与bash或tcsh中相同的源命令?

mar*_*001 29 unix windows bash cmd tcsh

我知道在unix世界中,如果编辑.profile或.cshrc文件,可以使用source~/.profile或source~/.cshrc来获取当前会话的效果.如果我在Windows上更改了系统变量中的某些内容,如何在不退出命令提示符会话并打开另一个命令提示符会话的情况下使其影响当前的命令提示符会话?

Eik*_*ike 43

在通常的Windows命令提示符(即cmd.exe)中,只是使用call mybat.bat了我想要的.我得到了它设置的所有环境变量.

  • 如果mybat.bat正在调用其他bat文件,则不起作用. (4认同)
  • 如果mybat.bat运行其他批处理脚本,则需要"调用"它们以允许执行返回到当前脚本. (3认同)
  • 这是一个非常老的问题,但是我认为这应该是正确的答案。“ call myfile.bat”->从批处理文件中读取环境变量,并在调用“ call”命令的当前环境中设置这些变量。那么所有这些变量都可以在当前shell中使用。 (2认同)

she*_*ter 13

dos shell将支持仅包含变量赋值的.bat文件,这些变量在执行时将在当前环境中创建变量.

  c:> type EnvSetTest.bat
  set TESTXYZ=XYZ

  c:> .\EnvSetTest.bat

  c:> set | find "TESTX"
  TESTXYZ=XYZ
  c:>
Run Code Online (Sandbox Code Playgroud)

IHTH.


Fat*_*n P 9

以下示例将帮助您解决问题。

env.bat该文件用于设置变量。其内容受到打击。

set name="test3"
Run Code Online (Sandbox Code Playgroud)

test.bat 我们的主要批处理文件。

call env.bat
call print.bat
pause
Run Code Online (Sandbox Code Playgroud)

现在print.bat批处理文件来打印变量。其内容如下

echo %name%
Run Code Online (Sandbox Code Playgroud)


joh*_*n64 7

我不敢,但你可以开始使用支持点源的Powershell.由于powershell窗口实际上是基于cmd所以你所有的dos命令都将继续工作,你获得新的能量,更多的力量.

  • 无法让PowerShell做到这一点 (8认同)
  • TLDR:力量!*无限*的力量! (3认同)