我想在多个 .xml 文件中搜索特定文本。我在网上找到了这段代码,效果很好。
@echo off
setlocal EnableDelayedExpansion
(for /F "delims=" %%a in ('findstr /I /L "<a> <b> <c>" *.xml') do (
set "line=%%a"
set "line=!line:*<a>=!"
set "line=!line:*<b>=!"
set "line=!line:*<c>=!"
for /F "delims=<" %%b in ("!line!") do echo %%b
)) > temp.txt
但是代码随机循环遍历目录中的 *.xml 文件,而不是基于文件名。
如何更改此代码以使其根据 xml 文件名或修改日期进行搜索?
在 *.xml 上添加排序但不起作用
你不能依赖排序的文件名。 NTFS 会自动按字母顺序对它们进行排序,但 FATx 不会对文件进行排序。新文件只是添加到目录中。因此,您需要另一个
for
循环来对文件进行排序(dir /on
用于名称排序-有关更多排序选项,请参见dir /?
)并使用现有循环一次只处理其中一个文件:
@echo off
setlocal EnableDelayedExpansion
(for /F "delims=" %%f in ('dir /b /on *.xml') do (
for /F "delims=" %%a in ('findstr /I /L "<a> <b> <c>" "%%f"') do (
etc.
)
)) > temp.txt
(未经测试)