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

时间:2012-01-07 03:08:22

标签: windows shell batch-file cygwin windows-shell

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

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

echo %PATH% > dat

然而,不确定如何在以后加载它。

set PATH=???????

由于 拉米

5 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:5)

如果PATH包含未加引号的&amp ;,则

echo %PATH%将失败或^(这不太可能,但肯定是可能的)

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

setlocal enableDelayedExpansion
echo !path!>dat

然后你可以使用Aacini建议的方法来回读

中的值
set /p "PATH=" <dat

答案 2 :(得分:3)

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

echo "export PATH=$PATH" > dat

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

. ./dat

请注意,“sourcing”脚本(而不仅仅是执行它)是修改当前环境所必需的 - 而不仅仅是新的子环境。

答案 3 :(得分:1)

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

for /F %%g in (dat) do set PATH=%%g

这就是写文件,因为我遇到了空格

echo>dat %PATH%

答案 4 :(得分:0)

即使路径值中有空格和点,以下示例也能正常工作:

@REM Backup PATH variable value in a file
@REM Set PATHBACKUP variable with value in the file

@echo %PATH% > pathvalue.txt
@type pathvalue.txt
@for /f "delims=" %%l in (pathvalue.txt) do (
  @set line=%%l
)
@set PATHBACKUP=%line%
@echo %PATHBACKUP%