【问题标题】:Can I shut down echo for this "for" cycle inputed from cmd?我可以从 cmd 关闭这个“for”循环输入的 echo 吗?
【发布时间】:2013-08-03 14:13:04
【问题描述】:

我尝试使用this excellent answer

有没有办法让一个命令行执行以下命令(删除所有大小为零的文件)而不打印任何输出?

for /r %F in (*) do if %~zF==0 del "%F"

(显示所有展开的命令,大小不为零时也是如此)

我尝试使用How to redirect stderr to null in cmd.exe,(尝试>、1>和2>)无济于事...

【问题讨论】:

  • 您是在询问如何执行“@echo off”,但在一行中使用命令?为什么?
  • @doctorlove 很可能,是的。因为我不想创建批处理文件来执行此操作。

标签: windows cmd


【解决方案1】:

@ 抑制一个命令的输出。所以以下是你想要的:

for /r %F in (*) do @if %~zF==0 @del "%F"

显示(仅)被删除的文件:

for /r %F in (*) do @if %~zF==0 del "%F" & echo removed %F

【讨论】:

  • @Joey 您添加的@ 似乎没有必要,因为通常 del 没有输出(这不是一个优势,但它甚至不会抑制错误消息 -> 尝试删除锁定的文件)。
  • 打印将被有效执行的删除命令:for /r %F in (*) do @if %~zF==0 echo "del %F" && del %F
【解决方案2】:
@echo off && for /r %F in (*) do if %~zF==0 del "%F" > NUL

> NUL 是因为我不记得某些情况是否导致del 尝试输出

【讨论】:

  • 见上面我和Doctorlove的对话
  • @Antonio 好吧,在这种情况下,我更新的答案应该是你所追求的
  • @Antonio 是的,当然,如果您想恢复它,只需将结尾更改为 > NUL && @echo on
猜你喜欢
  • 1970-01-01
  • 2014-01-12
  • 2020-11-24
  • 2021-02-10
  • 2021-05-15
  • 2021-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多