新手批处理脚本在这里。我正在尝试捕获Batch 'function'的输出(不完全是因为Batch缺少对函数的内置支持)到变量。这是我的代码:
@echo off
setlocal enabledelayedexpansion
goto main
:: Functions
:runps
powershell -NoProfile -ExecutionPolicy Bypass -Command "%1"
goto :eof
:appendToPath
set OLDPATHPS="[Environment]::GetEnvironmentVariable('PATH', 'User')"
for /f %%i in ('call :runps %OLDPATHPS%') do ^
set OLDPATH=%%i
:: ...
goto :eof
:main
call :appendToPath
当我运行它时,我从控制台获得以下输出:
Invalid attempt to call batch label outside of batch script.
为什么会发生这种情况,我该怎么做才能解决它?
答案 0 :(得分:2)
cmd
建立一个新的for /f %%i in ('%runps% "%OLDPATHPS%"') do (
set OLDPATH=%%i
)
实例,该实例无法访问旧实例中的批处理标签。
解决方案包括将结果输出到文件并读取文件或可能
runps
其中powershell -NoProfile -ExecutionPolicy Bypass -Command
已设置为Python