gpt4 book ai didi

batch-file - 如何删除只有4个字符的文件?

转载 作者:行者123 更新时间:2023-12-04 21:37:49 26 4
gpt4 key购买 nike

我使用Windows 7,并且希望构建一个批处理文件来完成以下任务:

删除C:\images目录中名称中包含4个字符的所有文件。
例如。 1234.jpg 7123.jpg,8923.jpg,7812.jpg,1245.jpg,0067.jpg,0001.jpg,0010.jpg,0060.jpg等。

那可能吗?

最佳答案

此解决方案将删除点名之前的名称部分包含4个字符的所有文件,以及点名之前的较短部分的文件。

ERASE C:\images\????.*



?代表任何字符(有时甚至根本没有字符,请参见下文)
*代表任何字符序列。


Windows有哪些不同的版本?

在Windows 98下(我有一种直觉,这对于“纯” DOS版本也有效,而没有完全支持长FAT名称,包括WIN95和更早的版本,甚至Windows Millennium), ?代表一个字符。

根据@dbenham的评论,我知道在更高版本的Windows中, ?代表0或1个字符。

FAT短名称呢?

现在,对于棘手的部分:带有前导点的名称(即第一个点之前的0个字符)如何处理?带有多个点的文件呢?

在执行任何操作之前,尾部的点都被删除,因此 abc.def.....的扩展名是 def,其基数是 abc

点在短名称中的固定位置,甚至对于不带扩展名的文件也存在。这就是 *.*匹配所有文件的原因,即使没有扩展名的文件也是如此。

在短FAT名称(也称为DOS名称)中,前导点,多个点,超过3个字符的扩展名和超过8个字符的基部(点之前)无效,因此文件的长名称(在Windows下显示)为其中一个将具有虚构的短名称,类似于 POBASE~N.POE,其中:


POBASE是基础的一部分(通常是开头,去除了不寻常的字符),
~是原义的波浪号字符,
N是一个或多个数字,通常是不与现有名称冲突的最小数字,
POE是扩展名的一部分(通常是开头,去除了不寻常的字符),其中扩展名是最后一个点之后的部分,
并且所有部分均为大写字母或数字。


我按以下顺序创建了以下文件:


.ab的简称 AB~1
a.b.c的简称 AB~1.C
a.bcde的简称 A~1.BCD
a.x y(注意空格)的简称为 a.xy
..ab的简称为 AB~2,因为 AB~1已经存在(第一个示例)
a.ba.b.a.b..a.b...是同一文件的所有等效名称(即,创建 a.b...将覆盖 a.b(如果存在))。


在旧的Windows 98系统上运行命令 dir ????.*时,将匹配以下文件:


AB~1,长名称 .ab
AB~1.C,长名称 a.b.c
AB~2,长名称 ..ab


现在,虽然Vista和7试图将大多数DOS旧版本扔出窗口(双关语意),但仍有一些残留:如果在资源管理器窗口的地址栏中键入 C:\PROGRA~1,您将进入( C:\Program files的半自动本地化变体,如果您插入FAT格式的USB密钥,则文件将具有短名称。我不确定通配符是否会与这些短名称匹配,但这是一些“有趣”的事实,表明甚至不值得调查:

有趣的事实


在法语版本的Windows 7中, C:\Program files将在资源管理器中显示为 C:\Programmes,但是如果尝试使用 cd C:\Programmes,它将失败,因此命令行似乎不使用翻译后的名称。 。
在同一Windows 7上, ????????.?(8.1个问号)将与 a.b.c(仅5个字符)匹配,但是任何较短的内容(例如带有7.1个问号的 ???????.?)将不匹配。
在同一Windows 7上,尽管 ????????.?中没有点,但 foo将匹配 foo


结论

总而言之,如果您要编写一个程序来可靠地删除文件中第一个(或最后一个)点前四个字符的文件,请使用其他一些解决方案,而不要使用通配符。

但是,请注意,较旧的Windows版本不具备使用笨拙的语法获取字符串长度的所有花式脚本功能(我是说, if "!n:~3,1!" neq "" echo del "%%F",它几乎与 zsh globbing modifiers一样糟糕。

如果Windows没有三层文件命名(FAT短名称,“实际”文件名和翻译后的文件名),并且没有选择更改 ?的含义,那么所有这些操作将变得非常简单。 。

关于batch-file - 如何删除只有4个字符的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11972572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com