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



我正在执行的命令如下:

dir >> dir.txt

我只对将某些行重定向到 txt 感兴趣,例如最后两行。我该怎么做?我findstr想到了,但我不知道怎么做。

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

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

假设你在Windows下,你可以从 https://sourceforge.net/projects/tailforwin32/使用Unix tail命令的Win32端口,然后发出管道命令:

dir | tail --lines=2

这显示了最后 2 行

希望这有帮助

这可以通过计算机上已有的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

这是一个简单的批处理文件,用于获取命令dir标准输出的最后两行输出,其中包含有关

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

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

这是批处理文件,用于显示当前目录上没有任何参数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 /?

最新更新