2016-09-14 60 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 
相關問題