批处理文件 - 匹配文件扩展名
可能是太简单的问题,但是如何匹配文件扩展名,例如 .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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为不可能仅使用 FOR 命令来过滤此内容(除非将 dir 的输出通过管道传输到 findstr),但在这种情况下,只需添加一个简单的 if 测试即可:
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:
我认为,问题出在简称的表述上。 (使用
dir /X
,您可以看到xxx.jpg
和xxx.jpg~
都有一个以<结尾的8.3文件名代码>.jpg。)I think, the problem arises from the short-name representation. (Use
dir /X
and you can see thatxxx.jpg
andxxx.jpg~
both have a 8.3 file-name that ends with.jpg
.)