循环批处理文件中隐藏文件不存在错误
Hide file not exist error in loop batch file
我有一个批处理脚本,用于将目录和子目录中的所有同名 txt 文件合并为一个,这是我的代码:
@echo off
for /f "tokens=*" %%a in (textfilenames.txt) do (
for /D /R %%I in (%%a.txt) do (
type "%%I" >> merged.tmp
echo. >> merged.tmp
)
ren merged.tmp All_Combined_%%a.txt
)
)
@pause
因此,当循环在某些目录中找不到文件时,会显示此消息:
The system cannot find the file specified.
The system cannot find the file specified.
The system cannot find the file specified.
Press any key to continue . . .
我想隐藏上面的错误,所以我在文件名中使用了 >NUL 例如:
@echo off
for /f "tokens=*" %%a in (textfilenames.txt) do (
for /D /R %%I in ('%%a.txt^>NUL') do (
type "%%I" >> merged.tmp
echo. >> merged.tmp
)
ren merged.tmp All_Combined_%%a.txt
)
)
@pause
但我仍然收到错误消息,我想让这个脚本完全无声,就像没有错误一样,或者如果以某种方式不可能,那么我想将错误自定义为:
The system cannot find the example.txt specified. in the \Subfolder\Enigma\
等等!
如果你做对了,你就不需要隐藏任何东西。
在这个例子中我们使用dir
命令和/s
函数来搜索文件。它不会抱怨找不到文件,因为它不希望文件无限期存在于任何给定目录中,它只是搜索它:
@echo off
for /f "useback delims=" %%a in ("textfilenames.txt") do (
for /f "delims=" %%I in ('dir /b/s/a-d "%%a.txt"') do (
(type "%%I"
echo()>>All_Combined_%%a.txt
)
)
)
@pause
注意,我删除了 ren
部分,因为它不需要。您可以在循环中写入组合文件。
我也使用 echo(
而不是 echo.
,原因可以在 SO 的许多答案中找到。
最后,我们可以消除一个带括号的代码块,方法是将第二个 for 循环与第一个循环内联:
@echo off
for /f "useback delims=" %%a in ("textfilenames.txt") do for /f "delims=" %%I in ('dir /b/s/a-d "%%a.txt"') do (
(type "%%I"
echo()>>All_Combined_%%a.txt
)
)
@pause
我有一个批处理脚本,用于将目录和子目录中的所有同名 txt 文件合并为一个,这是我的代码:
@echo off
for /f "tokens=*" %%a in (textfilenames.txt) do (
for /D /R %%I in (%%a.txt) do (
type "%%I" >> merged.tmp
echo. >> merged.tmp
)
ren merged.tmp All_Combined_%%a.txt
)
)
@pause
因此,当循环在某些目录中找不到文件时,会显示此消息:
The system cannot find the file specified.
The system cannot find the file specified.
The system cannot find the file specified.
Press any key to continue . . .
我想隐藏上面的错误,所以我在文件名中使用了 >NUL 例如:
@echo off
for /f "tokens=*" %%a in (textfilenames.txt) do (
for /D /R %%I in ('%%a.txt^>NUL') do (
type "%%I" >> merged.tmp
echo. >> merged.tmp
)
ren merged.tmp All_Combined_%%a.txt
)
)
@pause
但我仍然收到错误消息,我想让这个脚本完全无声,就像没有错误一样,或者如果以某种方式不可能,那么我想将错误自定义为:
The system cannot find the example.txt specified. in the \Subfolder\Enigma\
等等!
如果你做对了,你就不需要隐藏任何东西。
在这个例子中我们使用dir
命令和/s
函数来搜索文件。它不会抱怨找不到文件,因为它不希望文件无限期存在于任何给定目录中,它只是搜索它:
@echo off
for /f "useback delims=" %%a in ("textfilenames.txt") do (
for /f "delims=" %%I in ('dir /b/s/a-d "%%a.txt"') do (
(type "%%I"
echo()>>All_Combined_%%a.txt
)
)
)
@pause
注意,我删除了 ren
部分,因为它不需要。您可以在循环中写入组合文件。
我也使用 echo(
而不是 echo.
,原因可以在 SO 的许多答案中找到。
最后,我们可以消除一个带括号的代码块,方法是将第二个 for 循环与第一个循环内联:
@echo off
for /f "useback delims=" %%a in ("textfilenames.txt") do for /f "delims=" %%I in ('dir /b/s/a-d "%%a.txt"') do (
(type "%%I"
echo()>>All_Combined_%%a.txt
)
)
@pause