如何在以下批处理文件代码中抑制错误流
Posted
技术标签:
【中文标题】如何在以下批处理文件代码中抑制错误流【英文标题】:How do I suppress the error stream in the following batch file code 【发布时间】:2017-08-07 01:01:15 【问题描述】:我在批处理文件中使用以下代码将所有 MP3 文件从一组目录(始终在变化)复制到特定位置,然后删除 mp3 文件。该代码有效,但大多数时候找不到 MP3 文件。我正在尝试清理批处理窗口中显示的内容。当找不到 MP3 文件时,我总是收到“找不到文件”消息。我试图压制找不到的文件。产生错误的行是 for /f "delims 行(特别是 dir 部分)。如果我重新复制和 del 行,我仍然会收到错误。我尝试将 >nul 和 2>nul 放在 dir 的末尾先声明在右引号之前,然后在之后的每个位置。在双引号之前,我仍然得到 FNF 但没有其他错误,之后的每个位置都出现意外 > 错误。
如何隐藏此语句中的错误消息?
set dSource=C:\Users\pc\Documents\Recordings\VOX
set dTarget=c:\recordings
set fType=*.mp3
for /f "delims=" %%f in ('dir /a-d /b /s "%dSource%\%fType%"') do (
copy /V "%%f" "%dTarget%\" 2>nul
del "%%f" 2> nul
)
谢谢,
流浪者
【问题讨论】:
AFAICS 你在这里不需要for /f
和dir
,只要for /r %%f in (%dsource%\%ftype%) do ...
应该给出相同的文件名列表(如果有的话),如果没有则没有错误消息。
戴夫,使用您修改后的代码时,我没有找到相同的结果。我更改了我的示例代码(最后一行从 del 到 dir 并重新复制了副本)只是为了看看它会产生什么。我的代码会生成一个找到的文件列表(只是 filename.ext)。 for /r %%f in (%dsource%\%ftype%) do ... 代码运行了一段时间,但没有产生任何输出。
对不起;我测试了几种变体,但发布了错误的变体。试试for /r %dsource% %%f in (%ftype%) do ... something with %%f ...
【参考方案1】:
for /f "delims=" %%f in ('dir /a-d /b /s "%dSource%\%fType%" 2^>nul') do (
插入符号^
“转义”>
,告诉cmd
它是dir
命令的一部分(它是有效的),而不是for
(它是无效的)
(|
也是如此 - 通常用于连接到 find/findstr
)
【讨论】:
哦,我是如此接近!我在发帖后去寻找 ^ 声明并尝试了它,我一定没有把它放在正确的地方。非常感谢你的帖子。它解决了我的问题。以上是关于如何在以下批处理文件代码中抑制错误流的主要内容,如果未能解决你的问题,请参考以下文章
我正在尝试使用 Windows 批处理文件来运行 python 代码,但是我遇到了以下错误: