Windows中的头命令

时间:2017-03-08 12:15:00

标签: windows cmd

我想在Windows中执行简单的head命令以找到第一个文件夹,例如: dir / b / a-d |头-1 -

我无法将addtional工具包下载到此计算机,也无法使用PowerShell或其他脚本语言。

3 个答案:

答案 0 :(得分:2)

head -n 1中的cmd命令实现,以查找第一个文件夹

dir /b /ad | cmd /e /v /q /c"set/p.=&&echo(^!.^!"

这只是将dir命令的输出传递给一个单独的cmd实例(启用了延迟扩展和扩展),它将读取第一个输入行并将其回显给控制台。

注意:通常这没有问题,但理论上有可能因为set /pdir仍在写第一个时完全执行,这可能会失败但是还没有结束,得到一条切割线。

答案 1 :(得分:0)

在CMD中,您可以使用for /f获取命令结果的第一行非强制行:

FOR /F "delims=" %G IN ('<command>') DO ( echo %G && exit /B 0 )

对于你的例子,它将是:

FOR /F "delims=" %G IN ('dir /b /a-d') DO ( echo %G && exit /B 0 )

我没有马上的机器来测试它,但它应该可以解决问题。另请注意,默认选项会使for /f忽略行以分号;开头(请参阅链接中的“ eol ”选项。) 如果您希望在脚本中使用它,则必须使用%%G代替%G并使用转到

编辑for /f也可用于read files(不是OP的意图,但与问题有关)。读取第一行基本上是相同的(除for /f的输入外,它将是IN (<file>)而不是IN ('<command>')
如果希望命令的第一行nlines(再次针对文件,只需更改for /f的输入),则需要更复杂的脚本for /f

@echo off
SetLocal EnableDelayedExpansion
REM for this example, the first 5 lines
set nlines=5
set count=0
FOR /F "delims=" %%G IN ('<command>') DO ( 
    set /a count+=1
    IF !count! GTR %nlines% goto :afterLoop
    echo %%G
)
:afterLoop
EndLocal

此处,空行和以分号开头的行(取决于for /f的选项)将被for /f忽略和(不计算)。

答案 2 :(得分:0)

在命令行界面中,尝试使用“ head”命令 用法:     头文件名

这将显示文件的内容。