【发布时间】:2016-12-22 17:00:36
【问题描述】:
我想创建一个脚本,递归循环通过D:\MyFolder\ 的子文件夹,例如,查找多个名为MyFile.txt 的文件
然后在每个文件中查找关键字FROM 并检索FROM 和下一个分号; 之间的字符串。
MyFile.txt 的示例:
LOAD Thing1, Thing2, Thing3, FROM Somewhere ;
想要的结果是:Somewhere。
(分号;的位置可以在另一行)。
我做了一些尝试,但没有成功编写出正确的脚本:
@echo off
SET PATH="D:\MyFolder\"
FOR /R %PATH% %%f IN (MyFile.txt) DO (
FOR /F "delims=FROM eol=;" %%A in (%%f) do (
set str=%%A
ECHO %str%
)
)
如果不能批量完成,请告诉我用哪种语言可以轻松完成。最后我想有一个可执行的脚本。
【问题讨论】:
-
for /F的delims选项定义了 characters 而不是 words 用作解析文本文件的分隔符;使用findstr检索关键字FROM的位置(行号,选项/N);FROM和;之间的字符串可以包含多行吗?如果是这样,只需连接它们?每个文件是否总是出现一次FROM? -
我尝试使用 findstr 但执行脚本时无法识别,“findstr 未被识别为内部或外部命令”
-
是的,
FROM和;之间的字符串可以多行。每个文件中多次出现FROM。 -
我相信,你搞砸了你的
%path%变量...不要使用%path%作为变量名 -cmd使用它来查找它的可执行文件。
标签: windows batch-file for-loop substring