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