1

我有一个程序可以启动具有特定环境的 cmd 控制台。通过单击按钮启动控制台的问题,因此我无法在该环境中自己创建自定义启动器。

我想要什么:给定一个带有设置变量的文件(通过在自定义启动的 cmd 中运行 set 命令生成),我想通过读取该文件在当前 cmd 控制台中设置环境。

例子:

in.txt(注意右侧相同变量中的空格):

var1=c:\program files
path=c:\;c:\bin
var2=d:\folder with libs  

运行脚本后如:./script.sh in.txt当前cmd控制台中的环境应该是(运行set命令后输出):

var1=c:\program files
path=c:\;c:\bin
var2=d:\folder with libs

注意:只要环境设置正确,可以在脚本内部使用 bash 脚本。

4

2 回答 2

0

我已经编写了以下工作脚本:

  • 用法:script.bat 文件名
  • 如果未提供 file_name 打印使用情况
  • 使用环境变量创建备份文件envbkp.bat,然后再删除它们以进行可能的恢复

    @echo off
    
    set _exitStatus=0
    set _argcActual=0
    set _argcExpected=1
    
    echo.
    
    for %%i in (%*) do set /A _argcActual+=1
    
    if %_argcActual% NEQ %_argcExpected% (
        call :_ShowUsage %0%
        set _exitStatus=1
        goto:_EOF
    )
    
    set _exitStatus=
    set _argcActual=
    set _argcExpected=
    
    if exist ".\envbkp.bat" del ".\envbkp.bat"
    echo @echo off > envbkp.bat
    for /f "tokens=1* delims==" %%a in ('set') do (
        echo set %%a=%%b>> .\envbkp.bat
        set %%a=
    )
    
    for /f "tokens=1* delims==" %%a in ('type %~1') do (
        set %%a=%%b
    )
    goto:_EOF
    
    :_ShowUsage
        echo [USAGE]: %~1 env_file
        echo.
    if NOT "%~2" == "" (
        echo %~2
        echo.
    )
    goto:eof
    
    :_EOF
    
于 2012-08-13T20:40:00.307 回答
0

只需将 in.txt 重命名为 in.bat 即可,内容应为:

set var1=c:\program files
set path=c:\;c:\bin
set var2=d:\folder with libs

并在.bat 中运行

于 2012-08-13T20:23:16.980 回答