如何从 cmd 命令输出中获取第一行?

如何从 cmd 命令输出中获取第一行?

我只需要从 Windows cmd 命令中获取第一行。

命令示例:

dir /b /o-d cert*.pem

它返回:

cert1.pem
cert2.pem
cert3.pem

如何仅返回第一行cert1.pem

操作系统:Windows 10

答案1

这应该可以做到:

dir /b /o-d cert*.pem > temp.txt && for /l %l in (1,1,1) do @for /f "tokens=1,2* delims=:" %a in ('findstr /n /r "^" temp.txt ^| findstr /r "^%l:"') do @echo %b

奖金

Get-ChildItem hello*.txt | select -first 1

答案2

批量只需要 2 行短代码

@echo off

for /f "tokens=* usebackq" %%f in (`dir /b /o:d`) do (set "file=%%f" & goto :next)
:next

echo %file%

第一次迭代后将跳出goto循环。结果存储在%file%

然而这是一个XY问题因为你实际上不需要得到第一的线!!! 只需反转排序顺序(o:do:-d)即可获得最后的只需一个简单的单线

@for /f "tokens=* usebackq" %%f in (`dir /b /o:-d`) do @set "file=%%f"

在 PowerShell 中,您只需运行(Get-ChildItem)[0],或其别名(ls)[0](dir)[0]。或者,如果您只想要名称,那么

(dir)[0].Name       # base name only, or
(dir)[0].FullName   # for full name including path

相关内容