2015-12-13 55 views
1

新手批處理腳本在這裏。我試圖捕獲一個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. 

爲什麼會出現這種情況,我能做些什麼來解決這個問題?

回答

2

Call會創建一個新的cmd實例,該實例無法訪問舊實例中的批次標籤。

解決方案將包括將結果輸出到一個文件,讀取其中的runps已被設置爲powershell -NoProfile -ExecutionPolicy Bypass -Command

+0

不一樣漂亮的文件或可能

for /f %%i in ('%runps% "%OLDPATHPS%"') do ( set OLDPATH=%%i ) 

,但它的作品。謝謝! –

相關問題