Batch file 使用循环使用批处理脚本重命名文件名

Batch file 使用循环使用批处理脚本重命名文件名,batch-file,for-loop,if-statement,findstr,blat,Batch File,For Loop,If Statement,Findstr,Blat,我有一个文件夹,里面有文件:File1.txt和File2.txt file1.txt的内容包括: "DTS053C0 RUN DATE 10/01/11 DATATRAK SYSTEM PAGE 001 RUN TIME 13:35:08 INPUT PROGRAM TRANSMISSION STATUS REPORT STATUS - INPUT RECEIVED BY DTCC'S DATATRAK SYSTEM DETAIL RECORDS RECEIVED 0 HEADER RECOR

我有一个文件夹,里面有文件:File1.txt和File2.txt

file1.txt的内容包括:

"DTS053C0 RUN DATE 10/01/11 DATATRAK SYSTEM PAGE 001
RUN TIME 13:35:08
INPUT PROGRAM TRANSMISSION STATUS REPORT
STATUS - INPUT RECEIVED BY DTCC'S DATATRAK SYSTEM
DETAIL RECORDS RECEIVED 0
HEADER RECORD RECEIVED
HDR.SSYSID.E00.CORIG.SSUBOMMDDYYYY HEADERFILEDESCRIPTION N001 *
REJECTED
NO MATCH ON EXPECTED MASTER FOR HEADER" 
"The confirm file received from DTCC will be in the following format:
DTS053C0 RUN DATE 10/01/11 DATATRAK SYSTEM PAGE 001
RUN TIME 12:53:32
INPUT PROGRAM TRANSMISSION STATUS REPORT
STATUS - INPUT RECEIVED BY DTCC'S DATATRAK SYSTEM
DETAIL RECORDS RECEIVED 22
HEADER RECORD RECEIVED
HDR.SSYSID.E00.CORIG.SSUBOMMDDYYYY HEADERFILEDESCRIPTION N001 *
ACCEPTED
Example"
file2.txt的内容包括:

"DTS053C0 RUN DATE 10/01/11 DATATRAK SYSTEM PAGE 001
RUN TIME 13:35:08
INPUT PROGRAM TRANSMISSION STATUS REPORT
STATUS - INPUT RECEIVED BY DTCC'S DATATRAK SYSTEM
DETAIL RECORDS RECEIVED 0
HEADER RECORD RECEIVED
HDR.SSYSID.E00.CORIG.SSUBOMMDDYYYY HEADERFILEDESCRIPTION N001 *
REJECTED
NO MATCH ON EXPECTED MASTER FOR HEADER" 
"The confirm file received from DTCC will be in the following format:
DTS053C0 RUN DATE 10/01/11 DATATRAK SYSTEM PAGE 001
RUN TIME 12:53:32
INPUT PROGRAM TRANSMISSION STATUS REPORT
STATUS - INPUT RECEIVED BY DTCC'S DATATRAK SYSTEM
DETAIL RECORDS RECEIVED 22
HEADER RECORD RECEIVED
HDR.SSYSID.E00.CORIG.SSUBOMMDDYYYY HEADERFILEDESCRIPTION N001 *
ACCEPTED
Example"
我正在寻找一个批处理脚本,分别扫描这2个文件的内容,并确定包含“已拒绝”一词的文件,然后向我的电子邮件id发送电子邮件,就像通知此文件已被拒绝一样,请检查

我使用blat发送电子邮件作为通知*
要将@Stephans建议打包成一批:

Findstr/M只报告在拒绝时匹配的文件名, for/f处理该输出,集合在 找到变量。第一个条目产生一个前导逗号。 最终将此变量内容作为参数传递给子例程时 :Blat此第一个逗号由第二个字符串中的子字符串%Found:~1%删除 零位 在sub中,您可以使用%*=所有传递的参数将其作为blat例程的邮件主题或正文。 样本输出:

> SO_50858355.cmd
Yourblatcommand found Rejected in file1.txt
> SO_50858355.cmd
found Rejected in file3.txt
found Rejected in file1.txt
新样本输出:

> SO_50858355.cmd
Yourblatcommand found Rejected in file1.txt
> SO_50858355.cmd
found Rejected in file3.txt
found Rejected in file1.txt

批处理文件原样仅在当前文件夹中搜索,并使用通配符文件?.txt,因此您必须调整变量以满足您的需要,或首先设置另一个工作目录。

findstr/m REJECTED file?。txt仅包含字符串REJECTEDIt的文件名将在控制台中显示文件名,如果您需要在电子邮件中捕获这些信息,您需要扩展您的问题,并包含您需要我们帮助您的代码,使用。请注意,本网站旨在为您的代码提供特定可复制问题的帮助,它不是免费的脚本编写服务,因此,如果您不提供该代码,您的问题将脱离主题。很好。根据该网站,您认为适合本网站的具体编程相关问题是什么?请在这里学习!请提供您的编码尝试,并准确描述您遇到的问题…您能解释一下它是如何工作的吗调用:Blat%Found:~1%和Echo….在%*中查看更改的答案并提供更多解释。我尝试运行此代码,但cmd只是崩溃而没有发生任何事情。嗯,崩溃是什么意思?如何运行/启动批处理。有一些关于如何调试批处理的规则。见此,此处的规则也适用。它不是一个脚本编写服务,而是一个程序员帮助大学解决他们代码中的一个明显问题的网站。既然这是你的任务,你应该是做研究的人,找到bug并移除它们。嘿!它工作得很好。如果两个文件都有“拒绝”一词,那么我将以file1、file2被拒绝的形式获得输出,我如何将其更改为file1被拒绝file2被拒绝?