从Windows批处理文件中的文本文件中查找带有子字符串的完整单词

时间:2018-06-05 13:25:09

标签: batch-file

我正在寻找一种解决方案,它只会给我全字输出不是整行

例如

FileName.txt在一行中包含

ProductABC_Test.txt Productdef_Test.txt test.xml Productghi_Test.txt

anbcf

我需要搜索my.txt文件,如果它包含任何.xml,如果是,

然后批处理应该给我全名,即text.xml

如果我的文件内容是

  • ProductABC_Test.txt test1.xml Productdef_Test.txt test2.xml Productghi_Test.txt

我如何将这些变为两个不同的变量

先谢谢

1 个答案:

答案 0 :(得分:3)

for /f "delims=" %%a in (filename.txt) do for %%b in (%%a) do if "%%~xb"==".xml" echo %%b

应该产生所需的结果。

(从文件中读取每一行,然后检查每个标记 - 如果标记被视为文件名,扩展名为.xml,则显示该标记。

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q50701268.txt"
SET "files="
for /f "delims=" %%a in (%filename1%) do for %%b in (%%a) do if "%%~xb"==".xml" CALL SET "files=%%files%% %%b"
ECHO %files%
SET "files="
SET /a fcnt=0
for /f "delims=" %%a in (%filename1%) do for %%b in (%%a) do if "%%~xb"==".xml" SET /a fcnt+=1&CALL SET "files%%fcnt%%=%%b"
SET files

GOTO :EOF

我在我的测试目录q50701268.txt中使用了一个名为u:\sourcedir的文件,其中包含一些用于测试的虚拟数据。

multiples files扩展名的两种不同方法。

第一个提供单个变量,其中包含由空格分隔的名称列表。它当然可以修改为任何分隔符,如果需要可能引用名称。

第二个生成包含名称的单独变量。