批处理文件 - 匹配文件扩展名

Ste*_*hen 2 regex file-extension batch-file

可能太简单了,但是我如何匹配文件扩展名,例如.jpg在不匹配的情况下jpg~(即程序已制作本地副本的 jpg?)我当前的行是:

for /f %%a in ('dir /b *.jpg') do echo %%~na
Run Code Online (Sandbox Code Playgroud)

但是,如果任何程序打开了其中一个文件的副本(因此创建了一个.jpg~文件),则此正则表达式也将与这些文件匹配。我发现了一个关于$“行尾”的引用,但这样做根本不起作用:

for /f %%a in ('dir /b *.jpg$') do echo %%~na
Run Code Online (Sandbox Code Playgroud)

And*_*ers 5

我认为不可能仅使用 FOR 命令来过滤此内容(除非将 dir 的输出通过管道传输到 findstr),但在这种情况下,只需添加一个简单的 if 测试即可:

for %%A IN (*.jpg) DO if "%%~xA"==".jpg" @echo %%~A
Run Code Online (Sandbox Code Playgroud)

  • 恕我直言,这种迟钝行为已得到 http://support.microsoft.com/?kbid=164351 的确认 (2认同)