我最近開始在批處理檔案中使用一些腳本來做一些作業,但是當我嘗試從 PowerShell 獲取一些結果然后處理它時失敗了。
@echo off
setlocal
set "ps= $FindProcess = Get-Process | Where-Object {$_.MainWindowTitle -like 'VNC viewer'};"
set "ps=%ps% $title = $FindProcess.MainWindowTitle ^| Measure-Object -Line;"
set "ps=%ps% $title.Lines"
echo %ps%
for /f "delims=" %%I in ('powershell "%ps%"') do set "title=%%I"
:: For debugging and get the result
:: for /f "delims=" %%I in ('powershell "%ps%"') do echo %%I
echo %title% number of apps have "VNC viewer" title
但是當運行它時我拋出'Where-Object' is not recognized as an internal or external command, operable program or batch file.并且當它^之前放置|它導致空%title%并且當取消注釋除錯部分時我顯示這個錯誤
$FindProcess = Get-Process | Where-Object {$_.MainWindowTitle -like 'VNC viewer'}; $title = $FindProcess.MainWindowTitle | Measure-Object -Line; $title.Lines
At line:1 char:124
... -like 'VNC viewer'}; $title = $FindProcess.MainWindowTitle ^| Measur ...
~
Unexpected token '^' in expression or statement.
CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
FullyQualifiedErrorId : UnexpectedToken
ECHO is off.
number of apps have "VNC viewer" title
uj5u.com熱心網友回復:
我發現洗掉echo %ps%并且不放^之前|使它成功作業,但仍然不知道為什么 echo 它會引發錯誤!
編輯:閱讀aschipfl評論后,我終于明白了原因。實際上echo %ps%將被決議,echo what-was-is-variable-which-in-this-case-has-|-character并且這個命令也不會在沒有雙引號的情況下作業:) 謝謝
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/428982.html
上一篇:批處理退出時的隱式“popd”
