您好我想创建一个批处理文件,在.eml文件(目标A)中查找某些关键字,然后删除它们所在的行。之后,我需要批处理文件来放置" new"文件位于(目的地B)的单独.eml文件中。文件也可以是.txt。
e.g 需要删除第2行,我可以使用findstr,但是我的问题是,在删除行后,我只能放置"新文件"在一个.txt文件中,我需要放置"新文件"在同一目的地的多个.txt文件中。
`e.g
DESTINATION A "NEW FILE" DESTINATION B
line1: good line1: good File1.txt
line2: error > line2: good > File2.txt
line3: good File.... to however many "new files" i have.`
我已经搜索了一个强制类型命令,但我没有运气。
这是我使用的代码:
`findstr /v /I "2 3 7" C:\A\*.txt >> C:\B\onefileonly.txt
msg * Done!
exit >nul`
< -----这个onefileonly.txt是我的问题。我需要它是单独的"新文件夹"。
Inside the onefileonly.txt file
我也尝试过这段代码,但是我遇到了同样的问题。
`@echo off
echo Removing...
for /f "skip=3 delims=*" %%a in (C:\A\testfile.txt) do (
echo %%a >>C:\B\onefileonly.txt
) >nul
echo Lines removed, rebuilding file...
xcopy C:\B\onefileonly.txt C:\A\testfile.txt /y >nul
echo File rebuilt, removing temporary files
del C:\B\onefileonly.txt /f /q >nul
msg * Done!
exit >nul`
答案 0 :(得分:2)
好的,所以大约一个星期后,我设法将一个回答这个问题的脚本混在一起,我仍然需要清理一下,但这里是下面的代码
::CallScript
@echo off
CALL :ScriptA
CALL :ScriptB
CALL :ScriptC
pause
goto :eof
:ScriptA
del "C:\source\INCOMPLETE MESSAGE*.eml" "C:\source\EXCEPTION ERROR*.eml"
goto :eof
:ScriptB
@echo off
SETLOCAL
FOR %%i IN (C:\source\*.eml) DO (
TYPE "%%i"| more /E +4 >> C:\5500\%%~ni.eml
)
goto :eof
:ScriptC
del "C:\source\ERROR WITH Position Post*.eml"
goto :eof
该脚本删除源中不需要的电子邮件文件(这是不完整的消息和EXCEPTION错误) 然后脚本将电子邮件文件从源文件中删除,删除.eml文档中的前4行将它们复制到5500文件夹,最后删除源文件夹中的旧.eml文件。