一个非常简单的批处理文件。我正在尝试搜索不是.txt的文件扩展名。将有一个.txt,但其余的将类似于.txt_20190607。
for %%I in (\\01mtsdv130\Myapp\Log\*.*) do (
set var1=%%~xI
echo %var1
if %var1%==".txt" (
echo Matches
) else (
echo does not match
)
)
我在该文件夹中既有.txt文件,又具有扩展名中的额外日期信息。我怎么了?
答案 0 :(得分:1)
代码中有两个问题。
第一个是基于%
的普通变量的扩展相当“静态”,因为它是在第一次解析/执行代码并在此之后将其固定后才发生的。这意味着在第一次循环之后的迭代中,%var1%
的结果将不变。您必须使用!var1!
(以及设置EnableDelayedExpansion
)来获得所需的行为。
一种更简单的选择是完全摆脱var1
,而只使用%%~xI
。
另一个问题是,CMD(几乎)将引号视为其他任何字符。最值得注意的是,字符串a
和"a"
不被视为相等。因此,if
应该看起来像这样:
if "%%~xI"==".txt" (