如何从文件内容中设置环境变量?

sra*_*mij 11 windows shell cygwin batch-file windows-shell

在windows/cygwin上,我希望能够将PATH变量保存到一台机器上的文件中并将其加载到另一台机器上;

用于存储我正在做的变量:

echo %PATH% > dat
Run Code Online (Sandbox Code Playgroud)

但是,不确定以后如何加载它.

set PATH=???????
Run Code Online (Sandbox Code Playgroud)

谢谢拉米

Aac*_*ini 13

只需使用: set /P PATH=< dat

您必须注意echo %PATH% > dat在%PATH%值之后插入一个额外的空格; 如果稍后将其他路径添加到PATH变量,该空间可能会导致问题.这样就消除了额外的空间:echo %PATH%> dat.

  • 对我来说,这只适用于文件的前 1024 个字符。抱歉,我错过了这是在 cygwin 上的事实。也许在cygwin下效果更好。 (2认同)

dbe*_*ham 5

echo %PATH% 如果PATH包含一个不带引号的&或^(这不太可能,但肯定是可能的)会失败

更可靠的解决方案是使用:

setlocal enableDelayedExpansion
echo !path!>dat
Run Code Online (Sandbox Code Playgroud)

然后你可以使用Aacini建议的读取值的方法

set /p "PATH=" <dat
Run Code Online (Sandbox Code Playgroud)


Spa*_*key 5

这可能是邪恶的,但在 Windows 上我使用这个:

for /F %%g in (dat) do set PATH=%%g
Run Code Online (Sandbox Code Playgroud)

这是为了写入文件,因为我遇到了空格问题

echo>dat %PATH%
Run Code Online (Sandbox Code Playgroud)


zie*_*mer 3

由于依赖于 Cygwin,如何将命令放入保存的文件中,例如:

echo "export PATH=$PATH" > dat
Run Code Online (Sandbox Code Playgroud)

然后稍后获取脚本来设置路径:

. ./dat
Run Code Online (Sandbox Code Playgroud)

请注意,需要“获取”脚本(而不是仅执行它)才能修改当前环境 - 而不仅仅是新的子环境。