我正在寻找一种解决方案,它只会给我全字输出而不是整行。
例如
FileName.txt在一行中包含
ProductABC_Test.txt Productdef_Test.txt test.xml Productghi_Test.txt
anbcf
我需要搜索my.txt
文件,如果它包含任何.xml
,如果是,
然后批处理应该给我全名,即text.xml
如果我的文件内容是
我如何将这些变为两个不同的变量
先谢谢
答案 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
扩展名的两种不同方法。
第一个提供单个变量,其中包含由空格分隔的名称列表。它当然可以修改为任何分隔符,如果需要可能引用名称。
第二个生成包含名称的单独变量。