问题标签 [short-filenames]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2092 浏览

r - R:获取目录中所有文件的短文件名(文件名)列表

问题

list.files(Path)返回目录中文件名的向量Path。这很好,但我需要一个短文件名 (SFN) 向量。例如,WageDataFile.csv 的 SFN 是 WAGEDA~1.csv(如果目录中没有其他文件的词干为“WageDa”)。SFN 也称为 8.3 文件名。

所需的解决方案

具体来说,我希望有一个函数可以从操作系统中提取 SFN,而不是从 的输出中重建它list.files()(但list.files()也欢迎从 的输出中重建 SFN 的方法)。

可重现案例的代码

这将在“E:/FileNameTest”创建一组具有可变名称长度的文件:

以下是 的内容FileNames

这是我从这些文件名中需要的 SFN 列表(编辑:缩短的名称应该全部大写):

0 投票
1 回答
245 浏览

windows - Windows 10 的 MFT 中如何处理 DOS 文件名?

文件名存储在文件记录的 $30 属性中的 MFT 中。在 Windows 10 之前,文件记录通常有两个 $30 属性,第一个用于 8.3 文件名,如果文件名的长度超过 8 个字符,第二个用于长文件名。(如果存在硬链接,则可能有更多 30 美元的属性)。

这在 Windows 10 中发生了变化。8.3 和长文件名都存储在一个 30 美元的属性中(除非在注册表中关闭了 8.3 文件名的创建)。

这给我留下了两个问题:

  1. 如何从 $30 属性中提取 8.3 文件名?
  2. 显然,Windows 10 的现有版本仍然具有两个 30 美元的属性。在什么时候发生了变化?
0 投票
3 回答
766 浏览

batch-file - 删除批处理文件中具有特定扩展名的文件

我想递归删除批处理文件中具有特定扩展名的所有文件。

我知道以下命令:

但是,这在 Windows 上也会删除具有其他扩展名的文件,例如 .ext1 或 .ext2 。其原因似乎是此类文件的 8.3 文件名以 .ext 结尾,因此扩展名较长的文件也匹配。

我正在寻找上述命令的替代品,它递归地删除所有具有 .ext 扩展名的文件,但保留具有更长扩展名的文件。

0 投票
1 回答
508 浏览

powershell - 自动生成短文件名的简单方法

我有一个非常旧的汽车收音机,当它们被格式化为 FAT16 或 FAT32 时,它可以播放来自 USB 闪存驱动器的音乐,但它按短 8.3 文件名而不是长文件名对文件进行排序。我想播放分成多个文件的有声读物,但 Windows 有时会生成 f***ed 8.3 文件名。dir /x以下是包含 Internet1.mp3 到 Internet7.mp3 的文件夹的输出示例:

如您所见,文件 Internet5.mp3 到 Internet7.mp3 将在 Internet1.mp3 到 Internet4.mp3 之前播放,因为它们具有随机的短文件名。我的一些有声读物分为 100 多个部分,所以我想要一个脚本(Batch、Powershell、Python 等)自动将短文件名设置为可用的东西,即 INT1.MP3 到 INT7.MP3 那里播放哪个文件夹没问题。长文件名包含一个升序数字(此处为 1 到 7),它给出了文件的正确顺序。