删除.eml文件中的行并复制新的"文件" (目的地A)分成多个文件(目的地B)

时间:2016-02-23 13:03:19

标签: windows batch-file

您好我想创建一个批处理文件,在.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` 

1 个答案:

答案 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文件。