如何使用dir命令仅显示不带扩展名的文件名 [英] How to show only filenames without extensions using dir command
本文介绍了如何使用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屋!
查看全文