新手批量脚本这里。我试图将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.
为什么会发生这种情况,我能做些什么来解决?
最佳答案
Call
建立一个新的cmd
实例,该实例无法访问旧实例中的批处理标签。
解决方案包括将结果输出到一个文件并读取该文件,或者可能
for /f %%i in ('%runps% "%OLDPATHPS%"') do (
set OLDPATH=%%i
)
其中
runps
已设置为powershell -NoProfile -ExecutionPolicy Bypass -Command