2016-09-14 59 views
0

我有以下输出有限信息的批处理文件。我该如何取消这个批处理文件的所有输出?我想看到的是在输入批处理文件的名称并回车后,屏幕上显示的下一个内容是“C:>”。在此批处理文件中禁止所有输出

@ECHO OFF 
SETLOCAL EnableDelayedExpansion 
    (for /f "tokens=1 delims=;" %%A in (C:\ALL.txt) do (
    @echo %%A | find /i "\" 
if errorlevel 1 (
DEL "D:\!mypath!%%A" >> C:\ALL-OUT.txt 2>&1 
) ELSE (
set mypath=%%A 
))) 
@endlocal 

我觉得这一切都归结到这条线,我用它来测试一个%%是否包含反斜线:

@echo %%A | find /i "\" 

我尝试添加“1>零”到该行的末尾。它努力抑制所有产出。但是,它也创建了一个名为“null”的文件。

由于“For/f”逐行解析文件,我想知道是否有方法将echo命令合并到“For/f”中?

+1

使用'nul',而不是'null'。 – SomethingDark

+0

all.txt的内容是什么? – Compo

回答

1

该NUL设备参考nul而不是null>null创建一个名为null的文件。

你的第二个问题:你可以在命令块的输出重定向与单个重定向(其实,这是way faster

@ECHO OFF 
SETLOCAL EnableDelayedExpansion 
(
    for /f "delims=;" %%A in (C:\ALL.txt) do (
    echo %%A | find "\" >nul 
    if errorlevel 1 (
     DEL "D:\!mypath!%%A" 
    ) ELSE (
     set mypath=%%A 
    ) 
) 
) > C:\ALL-OUT.txt 2>&1 
endlocal 
相关问题