如何获取 windows .bat 文件中捕获的命令中的所有参数
how to get all the arguments in a command captured in a windows .bat file
grep -P "ERROR.+SQLTransientConnectionException" uts.log | wc -l
我正在尝试 copy/capture 将上述(上一个)命令添加到剪贴板。
我的尝试是一个包含以下内容的批处理文件 ec.bat
echo %* | clip
但是,当我在之前的 运行 命令中尝试这样做时,如下所示
ec.bat grep -P "ERROR.+SQLTransientConnectionException" uts.log | wc -l
它只复制了 grep 部分(如下所示)而不是整个命令行。它省略了竖线 (|) 和 "wc -l"
grep -P "ERROR.+SQLTransientConnectionException" uts.log
如何 get/request 整个命令行?是否有包含上一个命令的环境变量?是否有类似于 bash/zsh 特殊参数的解释 here
我从另一个角度尝试了这个问题。我试图找到命令提示符的历史记录。
从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 解析。
这会导致您的论点周围出现引号。
但它会失败,如果你的论点本身包含引号,比如
ec grep "hello|world" file
grep -P "ERROR.+SQLTransientConnectionException" uts.log | wc -l
我正在尝试 copy/capture 将上述(上一个)命令添加到剪贴板。
我的尝试是一个包含以下内容的批处理文件 ec.bat
echo %* | clip
但是,当我在之前的 运行 命令中尝试这样做时,如下所示
ec.bat grep -P "ERROR.+SQLTransientConnectionException" uts.log | wc -l
它只复制了 grep 部分(如下所示)而不是整个命令行。它省略了竖线 (|) 和 "wc -l"
grep -P "ERROR.+SQLTransientConnectionException" uts.log
如何 get/request 整个命令行?是否有包含上一个命令的环境变量?是否有类似于 bash/zsh 特殊参数的解释 here
我从另一个角度尝试了这个问题。我试图找到命令提示符的历史记录。
从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 解析。
这会导致您的论点周围出现引号。
但它会失败,如果你的论点本身包含引号,比如
ec grep "hello|world" file