如何使用dir命令仅显示不带扩展名的文件名 [英] How to show only filenames without extensions using dir command

查看:131
本文介绍了如何使用dir命令仅显示不带扩展名的文件名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试列出不包括其扩展名的文件名

我想要的方式:

File1
File2
File3

当前情况:

File1.txt
File2.txt
File3.txt

我尝试使用

@echo off
dir /A:-D /B
pause

但它不起作用。我在批处理文件和命令提示符中都尝试过。

我使用的命令是否正确?

推荐答案

使用For和ECHO来实现这一点

例如,假设扩展名始终为.txt

for %f  in ("*.txt") do @echo %~nf

我们不使用DIR,而是使用for命令遍历列表并将每个列表发送到ECHO,并将";~n";选项插入到%f中,以使扩展不显示。

替代方案是

FORFILES /c "cmd /c echo @fname"

但是,这样我会在每个输出文件名两边加上引号,这不是您想要的。

如果在批处理文件内运行,则需要将变量的%加倍

for %%f in ("*.txt") do @echo %%~nf

如果需要处理多个文件扩展名

只要该目录不包含名称带有扩展名的任何子目录,您就可以将*.txt概括为*.*

for %f in ("*.*") do @echo %~nf

如果您可能有一些没有扩展名的文件

如果文件有扩展名但前面没有扩展名,例如.gitignore,则生成的空ECHO命令将输出一条空洞的消息,如ECHO is on.为避免这种情况,您可以使用FIND命令和/V选项筛选出包含ECHO is的行:

for %f in ("*.*") do @echo %~nf | find /v "ECHO is"
当然,如果您的本地语言导致DOS输出ECHO is以外的内容,则此筛选将不起作用。并且它将丢失文件名中碰巧包含ECHO is的任何文件。

若要同时搜索子目录,请将"/R"添加到"for"

for /R %f in ("*.png") do @echo %~nf | find /v "ECHO is"

结论

这种疯狂,但这是我们为使用批处理语言而不是任何其他语言(根本不是!)而付出的痛苦代价。我就像一个酒鬼,向所有人承诺我永远不会再写一行批处理代码,然后发现自己又不好意思地再次这样做了。

这篇关于如何使用dir命令仅显示不带扩展名的文件名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆