簡體   English   中英

如何在 windows.bat 文件中捕獲的命令中獲取所有 arguments

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM