dir /a:d-l /b .*
.nuget
dir /a:d-l /b *.*
.nuget
AB
AppData
联系人
桌面
文档
下载
收藏夹
IntelGraphicsProfiles
链接
音乐
图片
保存的游戏
搜索
源
视频
我试过了dir /a:d /b *^.*
,但它像上一个命令一样列出了所有目录。如何仅列出名称字符之间至少有一个点的目录?
dir /a:d-l /b .*
.nuget
dir /a:d-l /b *.*
.nuget
AB
AppData
联系人
桌面
文档
下载
收藏夹
IntelGraphicsProfiles
链接
音乐
图片
保存的游戏
搜索
源
视频
我试过了dir /a:d /b *^.*
,但它像上一个命令一样列出了所有目录。如何仅列出名称字符之间至少有一个点的目录?
使用
*.<
或<.<
作为通配符。<
>
"
不允许在 Windows 文件名中使用它们的真正原因是,它们也是 DOS 衍生模式匹配代码中的通配符。(请参阅[MS-FSA] 2.1.4.3和[MS-FSA] 2.1.4.4,或在 GitHub 上搜索术语 DOS_STAR、DOS_DOT、DOS_QM。)在这种情况下, aka DOS_STAR 匹配 0 个或更多字符,直到名称中的
<
最后一个字符(预期用途似乎是用于文件扩展名匹配,例如而不是),但由于它的实现方式,在点后使用它会强制该点也明确匹配。.
<txt
*.txt
(这可能是 MS-DOS 8dot3 名称时代的遗留问题,其中分隔“名称”和“扩展名”字段的点是隐含存在的,因此 *.* 匹配每个名称 —— 并且程序期望即使在 Windows 95 明确指出名称中的点之后仍能继续工作。)
或者:切换到 PowerShell,它使用自己的通配符匹配,具有更多类似 Unix 的语义,并且可以执行
*.*
您所期望的操作。您可以在 find 的帮助下使用 dir...
我在 Windows 11 上测试过:test.gif