如何仅获得命令DIR的标准输出的最后两行?

时间:2019-08-23 15:20:26

标签: cmd directory findstr

我正在执行的命令如下:

dir >> dir.txt

我只想将某些行重定向到txt,例如最后两行。我怎样才能做到这一点? findstr会在我身上发生,但我不知道如何。

4 个答案:

答案 0 :(得分:2)

简单的匹配将隔离这两行,因为它们是仅有的两个以两个空格开头的行:

Dir | FindStr /BC:"  " >> "dir.txt"

答案 1 :(得分:1)

假设您使用的是Windows,则可以使用https://sourceforge.net/projects/tailforwin32/中的Unix tail命令的Win32端口,然后发出管道命令:

dir | tail --lines=2

这显示了最后两行

希望这会有所帮助

答案 2 :(得分:1)

使用您计算机上已有的PowerShell可以轻松完成此操作。

powershell -NoLogo -NoProfile -Command "& cmd.exe /C dir | Select-Object -Last 2 | Out-File -FilePath '.\dir.txt' -Encoding ascii -Append"

或者...

powershell -NoLogo -NoProfile -Command "& cmd.exe /C dir | Select-Object -Last 2" >>dir.txt

答案 3 :(得分:0)

这是一个简单的批处理文件,用于获取命令dir的标准输出的后两行以及与语言有关的信息

  • 目录中的文件数
  • 目录中文件的总字节数,
  • 目录中子目录的数量
  • 分区上的可用空间(以字节为单位)。

dir默认情况下排除设置了隐藏属性的目录和文件,因为如果根本不使用/A-H选项dir,则使用隐式/A

这是要显示的批处理文件,显示dir的最后两行输出,在当前目录上没有任何参数,这当然可以与包含批处理文件的目录不同。

@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "SummaryFiles="
set "SummaryFolders="
for /F delims^=^ eol^= %%I in ('dir') do (
    set "SummaryFiles=!SummaryFolders!"
    set "SummaryFolders=%%I"
)
if defined SummaryFiles echo !SummaryFiles!
if defined SummaryFolders echo !SummaryFolders!
pause
endlocal

使用两个echo完成的输出也可以使用例如重定向到文本文件

(   if defined SummaryFiles echo !SummaryFiles!
    if defined SummaryFolders echo !SummaryFolders!
) >DirectorySummary.txt

要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。

  • dir /?
  • echo /?
  • endlocal /?
  • for /?
  • if /?
  • pause /?
  • set /?
  • setlocal /?