I have this for-loop batch to convert a bunch of text files to PDF. Sometimes there are literally thousands of files, which I do not want the output to fill up the log files.
How can I mute the output of this for-loop batch? I've tried placing 2>NUL
in a few places, without much success.
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%F IN (D:\TEMP\FILE*.TXT) DO (
SET TMPFILE=%%F
SET NEWFILE=!TMPFILE:~0,-4!.PDF
C:\EXE\txt2pdf.exe !TMPFILE! !NEWFILE! -PFS9
)
Thanks in advance!
CodePudding user response:
To prevent output of individual lines you can both turn echoing off individually for the line, using @
, and prevent both stdOut and stdIn using command redirection 1>
and 2>
.
You can also completely remove SETLOCAL ENABLEDELAYEDEXPANSION
, SET TMPFILE=%%F
, and SET NEWFILE=!TMPFILE:~0,-4!.PDF
, then change C:\EXE\txt2pdf.exe !TMPFILE! !NEWFILE! -PFS9
to "C:\EXE\txt2pdf.exe" "%%F" "%%~dpnF.PDF" -PFS9
.
Essentially your entire batch file, (or single line if you have others), could look like this:
@For %%G In ("D:\TEMP\FILE*.TXT") Do @"C:\EXE\txt2pdf.exe" "%%G" "%%~dpnG.pdf" -PFS9 1>NUL 2>&1