Windows 命令行 - 将目录搜索的输出通过管道传输到(截断)操作

Windows 命令行 - 将目录搜索的输出通过管道传输到(截断)操作

这是 Windows 10。问题很简单,我只是不知道执行此操作的正确语法。

这将列出所有以 .log 结尾的文件:

dir /s /p *.log

这将截断文件:

echo|set /p=>"myfile.log"

我想要做的是将第一个操作的输出通过管道传输到第二个操作,从而截断返回的匹配文件dir。我该怎么做?

答案1

在 Windows 中,普通 cmd 的管道并不常见。因此,对于 cmd,您可能必须获取变量中的这些文件的列表,并使用 for 循环来处理它们。也许您也可以直接dir在循环中使用该命令。

我会选择 PowerShell,它可以做类似的事情,但在我看来更具可读性:

Get-ChildItem -Recurse -Filter "*.log" | Clear-Content

如果您想确认每个文件(/P屏幕上dir确实会在每个屏幕上暂停),您可以使用-Confirm开关Clear-Content

如果您出于某种原因想要使用 for 循环并使用 echo,则可以使用:

Get-ChildItem -Recurse -Filter "*.log" | %{ echo $null > $_; }

答案2

要仅收集日志文件中的目录输出,请删除 /p 并重定向 dir /s *.log >myfile.log

这将创建一个新文件,并删除所有以前的内容。

如果您希望每行都有完整路径,而不是按子目录列出,请使用 /b dir /s /b *.log >myfile.log

答案3

我如何截断返回的匹配文件dir /s /p *.log

使用以下批处理文件(test.cmd):

@echo off
setlocal
for /f "tokens=*" %%f in ('dir /b /s *.log') do (
  echo|set /p=>"%%f"
  )
endlocal

使用示例:

> dir /s /p *.log
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

02/10/2016  17:02             2,305 test.log
               1 File(s)          2,305 bytes

 Directory of F:\test\test

02/10/2016  17:02             2,305 test.log
               1 File(s)          2,305 bytes

 Directory of F:\test\test with space

02/10/2016  17:02             2,305 test.log
               1 File(s)          2,305 bytes

     Total Files Listed:
               3 File(s)          6,915 bytes
               0 Dir(s)  1,737,619,595,264 bytes free

> test

> dir /s /p *.log
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

24/11/2016  10:39                 0 test.log
               1 File(s)              0 bytes

 Directory of F:\test\test

24/11/2016  10:39                 0 test.log
               1 File(s)              0 bytes

 Directory of F:\test\test with space

24/11/2016  10:39                 0 test.log
               1 File(s)              0 bytes

     Total Files Listed:
               3 File(s)              0 bytes
               0 Dir(s)  1,737,619,607,552 bytes free

进一步阅读

相关内容