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

发布于 2024-09-11 06:26:44 字数 358 浏览 7 评论 0原文

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

for /f %%a in ('dir /b *.jpg') do echo %%~na

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

for /f %%a in ('dir /b *.jpg$') do echo %%~na

Probably far too easy question, but how do I match a file extension such as .jpg while not matching jpg~ (i.e. a jpg that a program has made a local copy of?) My current line is:

for /f %%a in ('dir /b *.jpg') do echo %%~na

But if any program has a copy of one of the files open (and thus has made a .jpg~ file) this regexp will match those too. I found a reference to $ being the 'end of line', but doing this doesn't work at all:

for /f %%a in ('dir /b *.jpg
) do echo %%~na

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

看透却不说透 2024-09-18 06:26:44

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

for %%A IN (*.jpg) DO if "%%~xA"==".jpg" @echo %%~A

I don't think it is possible to filter this with just a FOR command (unless you pipe the output of dir to findstr) but in this case, adding a simple if test is all that is needed:

for %%A IN (*.jpg) DO if "%%~xA"==".jpg" @echo %%~A
桃扇骨 2024-09-18 06:26:44

我认为,问题出在简称的表述上。 (使用dir /X,您可以看到xxx.jpgxxx.jpg~都有一个以<结尾的8.3文件名代码>.jpg。)

I think, the problem arises from the short-name representation. (Use dir /X and you can see that xxx.jpg and xxx.jpg~ both have a 8.3 file-name that ends with .jpg.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文