2017-03-08 74 views
0

我想在Windows中執行簡單的頭部命令以查找第一個文件夾,如: dir/b/a-d | head -1窗口中的頭部命令

我無法將addtional套件下載到本機,也無法使用PowerShell或其他腳本語言。

+0

在這種情況下,你不能。 – Seth

+0

@Seth是的,你可以 –

+0

@ Shaked看到我的回答 –

回答

1

cmdhead -n 1命令實現查找第一個文件夾

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

這只是管道dir命令的輸出到一個單獨的cmd實例(具有延遲擴展和擴展使能),將讀出的第一輸入並將其回顯給控制檯。

:通常這個工作沒有問題,但在理論上有可能,所以如果正好執行set /pdir還在寫第一行,但還沒有結束,得到的切割線,這可能會失敗。

+0

謝謝!這是非常有幫助的 – Shaked

0

在CMD您可以使用for /f獲得第一非empy行命令的結果:

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) 

我沒有立即測試它的Windows機器,但它應該做的伎倆。另請注意,默認選項使for /f忽略以分號;開頭的行(請參閱鏈接中的「eol」選項)。
如果你想在腳本中使用它,你將不得不使用%%G代替%G和使用goto語句

編輯:該for /f也可以用來read files(不是OP但相關的意向到問題)。閱讀的第一行,然後basicly同樣的事情(除了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計數)。

+0

在這裏,我們有一個完美的腳本示例。因此'或其他腳本語言'。這是一個原始的,但它會是腳本和海事組織它並不真正合格簡單。這並不意味着它不是一個完善的解決方案,但是如果沒有標準的開箱即用的命令來實現它,那麼對於最初的問題的要求來說,真的沒有太多的解決方案。 – Seth