批处理文件:如何捕获变量中函数的输出?

时间:2015-12-13 19:11:08

标签: windows batch-file command-line cmd

新手批处理脚本在这里。我正在尝试捕获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.

为什么会发生这种情况,我该怎么做才能解决它?

1 个答案:

答案 0 :(得分:2)

cmd建立一个新的for /f %%i in ('%runps% "%OLDPATHPS%"') do ( set OLDPATH=%%i ) 实例,该实例无法访问旧实例中的批处理标签。

解决方案包括将结果输出到文件并读取文件或可能

runps

其中powershell -NoProfile -ExecutionPolicy Bypass -Command已设置为Python