Bash windows cmd环境
我有一个程序在特定环境下启动cmd控制台。问题是控制台是通过单击按钮启动的,因此我无法使用该环境自行创建自定义启动器 我想要的是: 给定一个文件,其中包含通过在自定义启动的cmd中运行set命令生成的set变量,我希望通过读取该文件在当前cmd控制台中设置环境 例如: in.txt请注意右侧相同变量中的空格:Bash windows cmd环境,bash,batch-file,cmd,environment,Bash,Batch File,Cmd,Environment,我有一个程序在特定环境下启动cmd控制台。问题是控制台是通过单击按钮启动的,因此我无法使用该环境自行创建自定义启动器 我想要的是: 给定一个文件,其中包含通过在自定义启动的cmd中运行set命令生成的set变量,我希望通过读取该文件在当前cmd控制台中设置环境 例如: in.txt请注意右侧相同变量中的空格: var1=c:\program files path=c:\;c:\bin var2=d:\folder with libs 在运行以下脚本后:./script.sh in.txt当
var1=c:\program files
path=c:\;c:\bin
var2=d:\folder with libs
在运行以下脚本后:./script.sh in.txt当前cmd控制台中的环境应在运行set命令后输出:
注意:只要环境设置正确,bash脚本就可以在脚本中使用。只需将in.txt重命名为in.bat,内容应为:
set var1=c:\program files
set path=c:\;c:\bin
set var2=d:\folder with libs
并在.bat中运行我已设法编写了以下工作脚本: 用法:script.bat文件名 如果未提供文件名,则打印使用情况 在删除环境变量以进行可能的恢复之前,使用环境变量创建备份文件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
@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