[英]how to get all the arguments in a command captured in a windows .bat file
grep -P "ERROR.+SQLTransientConnectionException" uts.log | wc -l
我試圖將上述(上一個)命令復制/捕獲到剪貼板。
我的嘗試是包含以下內容的批處理文件 ec.bat
echo %* | clip
但是,當我在以前運行的命令上嘗試時,如下所示
ec.bat grep -P "ERROR.+SQLTransientConnectionException" uts.log | wc -l
它只復制了 grep 部分(如下所示)而不是整個命令行。 它省略了管道(|)和“wc -l”
grep -P "ERROR.+SQLTransientConnectionException" uts.log
如何獲取/請求整個命令行? 是否有包含上一個命令的環境變量? 是否有類似於此處解釋的 bash/zsh 特殊參數的東西
我從另一個角度嘗試了這個問題。 我試圖找到命令提示符的歷史記錄。
從https://www.itechtics.com/view-command-prompt-history-windows/#:~:text=Open%20CMD%20from%20the%20Start,within%20the%20window%20of%20CMD。 ,我發現你可以輸入一個命令“doskey /history”來給出歷史。 我可以使用 tail 獲取上一個命令並根據需要處理它。
我想這有助於從不同的角度解決問題。
您可以使用 doskey 宏。
doskey ec=toclip.bat "$*"
並在批處理文件toclip.bat
@echo off
set line=%*
setlocal EnableDelayedExpansion
REM *** Remove the surrounding quotes from line
for /F "delims=" %%L in ("!line!") DO (
endlocal
(echo(%%~L) | clip
)
這是出乎意料的,但是 doskey 宏優先於普通的 cmd.exe 解析。
這會導致您的 arguments 周圍出現引號。
但它失敗了,如果你的 arguments 本身包含引號,比如
ec grep "hello|world" file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.