我想在Windows中执行简单的head命令以找到第一个文件夹,例如: dir / b / a-d |头-1 -
我无法将addtional工具包下载到此计算机,也无法使用PowerShell或其他脚本语言。
答案 0 :(得分:2)
head -n 1
中的cmd
命令实现,以查找第一个文件夹
dir /b /ad | cmd /e /v /q /c"set/p.=&&echo(^!.^!"
这只是将dir
命令的输出传递给一个单独的cmd
实例(启用了延迟扩展和扩展),它将读取第一个输入行并将其回显给控制台。
注意:通常这没有问题,但理论上有可能因为set /p
在dir
仍在写第一个时完全执行,这可能会失败但是还没有结束,得到一条切割线。
答案 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”命令 用法: 头文件名
这将显示文件的内容。