我想创建一个脚本,以递归方式循环遍历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%
)
)
如果无法批量完成,请告诉我用哪种语言可以轻松完成。我想最终有一个可执行脚本。
答案 0 :(得分:1)
您的代码中存在一些问题:
delims
的{{1}}选项定义字符,但不是字用作解析文本文件的分隔符。要查找单词,请改用for /F
(您可以使用其findstr
选项导出搜索字符串的位置/行号。)/N
eol
选项定义了一个字符,如果它出现在开头,则忽略一行(或者它前面只有分隔符)。for /F
实际上不会搜索文件,以防集合中没有通配符(for /R
,?
)(这是括号中的部分)。 *
命令可以执行此操作,因此您可以围绕dir /S
包裹for /F
循环来解决此问题。dir /S
变量来查找可执行文件,例如PATH
,因此您不能覆盖它;改为使用不同的变量名称。以下是我可能会这样做的方式(假设还需要返回关键字findstr
后面的任何文字):
FROM