我有一个批处理文件,在几个.RTF文件(file1)中查找特定信息,然后将文档名称放在file2中。我需要在命令行电子邮件程序中创建一个逗号分隔文件(file3),以根据file2的内容将所有file1作为附件发送。
我的批处理文件正确创建了所有file1和file2。我有一个FOR语句,它在file2中的文档名称末尾添加一个逗号,并在发出ECHO命令时用逗号显示文档名称。
批处理文件只会输出它遇到的最后一个文件名/逗号。
如何使用每行末尾的逗号将file2中的所有文档名称写入file3。
当前输出到file3:
7868685425587963.rtf,
所需的输出到file3:
7868684496427836.RTF,
786868535408221.RTF,
7868685416423800.RTF,
7868685425587963.rtf,
批处理文件中的脚本:
setlocal
del file2.txt
del file3.txt
set comma=,
echo %comma%
rename *.DAT *.RTF,
findstr /m "0097" *.RTF >> file2.txt
for /f %%a In (file2.txt) DO set str=%%a%comma%
echo %str%>> file3.txt
pause
endlocal
我一直试图解决这个问题几个星期,并尝试了很多次。
答案 0 :(得分:0)
而不是一遍又一遍地设置str,
for /f %%a In (file2.txt) DO set str=%%a%comma%
echo %str%>> file3.txt
直接附加到文件。
for /f %%a In (file2.txt) DO echo %%a%comma%>> file3.txt
答案 1 :(得分:0)
代码中的问题是命令echo %str%
在for /F
循环之外,因此它在循环之后执行并仅输出最后一行。 answer已在{{3}}中显示如何解决此问题。
但是,您不需要为任务创建临时文件file2.txt
,for /F
循环可用于捕获findstr
命令行的输出:
> "file3.txt" (
for /F "delims=" %%F in ('
findstr /M /F:"file1.txt" "0097"
') do (
echo(%%F,
)
)
如果要搜索当前目录中的所有.rtf
文件而不是依赖列出file1.txt
文件的文件.rtf
,请改为使用此文件:
> "file3.txt" (
for /F "delims=" %%F in ('
findstr /M "0097" "*.rtf"
') do (
echo(%%F,
)
)