1

一个非常简单的批处理文件。我正在尝试搜索不是 .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 文件和扩展名中包含额外日期信息的文件。我有什么问题?

4

1 回答 1

1

代码中有两个问题。

第一个是%基于 - 的普通变量的扩展是相当“静态的”,因为它发生在第一次解析/执行代码时,并且从那时起就被修复了。这意味着在第一个循环之后的迭代中,结果不会%var1%改变。您必须使用(连同设置)来获得您想要的行为。!var1!EnableDelayedExpansion

一个更简单的选择是完全摆脱var1并只使用%%~xI.

另一个问题是 CMD 将引号(几乎)视为任何其他字符。最值得注意的是,字符串a"a"不被认为是相等的。因此,if应该如下所示:

if "%%~xI"==".txt" (
于 2019-07-09T12:52:14.057 回答