我想从存储在perticular文件夹中的一组.dat文件中捕获包含单词“REJECTED”的字符串。我正在使用下面的find命令
find "REJECTED" C:\Users\SBA\Desktop\CBS\OUTBOX\*
但它产生的输出如下所示
---------- C:\USERS\SBA\DESKTOP\CBS\OUTBOX\PRF_FES_ACCTBTCH_11012014_47.DAT
2DR0089 C40291100002100000000628780011/01/145070A0158230-R/ A0158230-RINR 01 9545 5070 00 BATCH REJECTED
2CR0089 G39000000033900000000628780011/01/145070A0158230-R/ A0158230-RINR 01 9545 5070 00 BATCH REJECTED
---------- C:\USERS\SBA\DESKTOP\CBS\OUTBOX\PRF_FES_ACCTBTCH_11012014_48.DAT
---------- C:\USERS\SBA\DESKTOP\CBS\OUTBOX\PRF_FES_ACCTBTCH_11012014_49.DAT
---------- C:\USERS\SBA\DESKTOP\CBS\OUTBOX\PRF_FES_ACCTBTCH_11012014_50.DAT
我不想在排除部分被拒绝之后排队。
---------- C:\USERS\SBA\DESKTOP\CBS\OUTBOX\PRF_FES_ACCTBTCH_11012014_47.DAT
2DR0089 C40291100002100000000628780011/01/145070A0158230-R/ A0158230-RINR 01 9545 5070 00 BATCH REJECTED
2CR0089 G39000000033900000000628780011/01/145070A0158230-R/ A0158230-RINR 01 9545 5070 00 BATCH REJECTED
表示我想要仅包含“REJECTED”的输出。如上图所示。
如何实现这个目标?
答案 0 :(得分:1)
findstr /m /i "REJECTED" C:\Users\SBA\Desktop\CBS\OUTBOX\*
/i
仅在不区分大小写时才需要 - 如果这是您想要的。
答案 1 :(得分:0)
for %i in ("C:\Users\SBA\Desktop\CBS\OUTBOX\*") do @findstr "REJECTED" %i
用于批处理文件,请使用
for %%i in ("C:\Users\SBA\Desktop\CBS\OUTBOX\*") do findstr "REJECTED" %%i
编辑: 如果你想要包含文件名,那就更简单了:
findstr "REJECTED" "C:\Users\SBA\Desktop\CBS\OUTBOX\*"
要在两个目录中搜索,请使用findstr
两次(如果未找到任何内容,则不会生成输出)
findstr "REJECTED" "C:\Users\SBA\Desktop\CBS\OUTBOX\*"
findstr "REJECTED" "C:\Users\SBA\Desktop\CBS\PROCESSED\*"
如果只需要包含该字符串的文件的名称,请使用
findstr /M "REJECTED" "C:\Users\SBA\Desktop\CBS\OUTBOX\*"
答案 2 :(得分:0)
type "C:\Users\SBA\Desktop\CBS\OUTBOX\*" 2>nul | find "REJECTED"
只有一个type
命令可以读取所有文件,只将其发送到一个过滤行的find
进程。没有文件名,也没有附加行。
已编辑以适应评论
如果文件有时在一个文件夹中,有时在另一个文件夹中,最好的选择是尝试type
最常用文件夹中的文件,如果命令找不到指定的文件,那么键入第二个文件夹中的文件(包括用于缩短代码行的变量声明)
set "folder=C:\Users\SBA\Desktop\CBS"
set "files=PRF_FES_ACCTBTCH_????????_*.dat"
(type "%folder%\OUTBOX\%files%" || type "%folder%\PROCESSED\%files%") 2>nul | find "REJECTED"