问题标签 [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 回答
958 浏览

json - JSON 3 字母文件扩展约定

RFC7159规定存储的 JSON 文件的文件扩展名应该是.json。我使用的文件系统只有 3 个字母的文件扩展名。在此类系统中,JSON 文件是否有任何普遍接受的文件扩展名?

由于不存在 3 字母约定,我应该编造一些东西(例如.JON,一个目前未使用的 3 字母扩展名),还是坚持.TXT

2019 年 1 月 16 日更新。RFC7159 已被RFC8259淘汰,它仍然声明文件扩展名应该是.json

0 投票
2 回答
2559 浏览

windows - Windows 中如何生成短文件名?

我目前正在使用以下 P/Invoke 签名来获取常规 Windows 文件的短文件名:

目前 - 它工作没有任何问题,但我注意到一些相当奇怪的事情:
我知道 Windows 使用以下短文件名约定:

将名称剪切为 6 个字符(不带扩展名)
附加波浪号( ~)
附加一个表示匹配索引的无符号整数(从 1 开始)
附加原始文件扩展名

因此,文件名C:\abcdefghijklmn.txt应该可以在短名称下访问C:\abcdefg~1.txt(这工作得很好。)

现在奇怪的部分:我最近在我的音乐目录中执行了一个小的搜索,以查找特定的音频文件。结果是这样的:

并以简写形式进行相同的搜索:

我的问题是:为什么 Windows 会在波浪号(比如RA23A6or RA0CAE)之前生成这样的“随机”前缀?

0 投票
1 回答
2937 浏览

git - OS X上的Git“文件名太长”错误

我有一个git在 linux 上跟踪的目录,并将其复制到 mac OS。git status由于filename: File name too long错误,多个文件未跟踪。一个文件名(及其相对路径)为 393 个字符。是不是有 4096 个字符的限制(Windows 除外)?[参考]core.longpaths的设置设置为true。(也core.precomposeunicode设置为 true,但可能无关紧要)。有什么建议吗?

0 投票
1 回答
136 浏览

copy - NTFS:复制具有相似长/短文件名的文件 - 谁能解释这种现象?

我试图找到在 Windows/NTFS 下复制过程的以下结果的解释。

在源目录中,有 2 个文件:

如您所见,有一个文件具有短文件名和长文件名,而另一个文件没有短文件名但短文件名作为长文件名。现在,我将这两个文件复制到不同的目录中:

复制第二个文件后,令人惊讶的是,第一个文件消失了,第二个文件取了第一个文件的文件名:

这怎么可能?我可以想象 NTFS 在内部使用短文件名进行复制,但是,即使两个文件的短文件名也不相同;另外,它如何接管文件名?

对该现象的任何假设/建议/答案表示赞赏。

谢谢汤米

0 投票
2 回答
5532 浏览

batch-file - How can I convert a Windows short name path into long names within a batch script

I am writing a Windows batch script, and I have an argument or variable containing a path that uses short 8.3 names. The path might represent a file or folder.

How can I convert the 8.3 path into a long-name path? At a minimum I would like to be able to simply print out the full long-name path. But ideally I would like to safely get the long-name path into a new variable.

For example, given the path C:\PROGRA~1\AVASTS~1\avast\BROWSE~1.INI, I would like to return C:\Program Files\AVAST Software\avast\BrowserCleanup.ini.

As a batch enthusiast, I am most interested in a pure batch solution that uses only native Windows commands. But hybird use of other native scripting tools like PowerShell and JScript is also acceptable.

Note: I am posting my own answer for this question. I searched the web, and was surprised to find precious little on this subject. I developed multiple working strategies, and thought others might be interested in what I found.

0 投票
2 回答
49 浏览

bash - 我的列表命名代码有什么问题?

我想将文件名从更改Sub****_Ses1HU_TT_12_****_UU; (**** 编号从 0001 到 1600)

我做了以下

0 投票
1 回答
214 浏览

powershell - 带有 8.3 短名称表示法的递归目录列表

我有一个 PS 命令:

这可以给我一个目录,列出我想要的方式,但有一个警告:如果目录结构或文件名最大(我认为它的 260 个字符)它不会在生成的 csv 中列出这个文件,它会引发错误。

有没有人有任何建议使它与 8.3 表示法兼容?我认为这是获取所有文件的唯一方法。

0 投票
1 回答
1196 浏览

windows - 以长模式复制短 8.3 文件名 (Windows)

试图从命令行复制一个名为“SCOOTE~1.txt”的文件到一个文件夹,其中有一个名为“Scooter - Cosmos.txt”的文件。

问题是副本也会将“Scooter - Cosmos.txt”的名称收缩为“Scoote~1.txt”,并询问我是否要覆盖该文件。

如何在不影响其他长名文件的情况下逐字复制“SCOOTE~1.txt”?接受外部命令行工具的建议。

0 投票
1 回答
52 浏览

batch-file - 批处理文件问题(具有长文件扩展名的文件名)

最近我写了一个简单的 BAT 文件,用于从当前目录及其子目录中删除所有不必要的 *.RES 文件:

但它还删除了所有 *.RESX 文件(哦,我倒霉的 C# 项目......)。

我知道它之前将所有文件名转换为 DOS 8.3 格式,因此任何像“ Resources.resx ”这样的文件都将具有 DOS 8.3 文件名“ resour~1.res ”,因此不幸的是它会匹配模式“* .res”。

问题:有没有简单的方法来强制批处理文件考虑完整的文件名,而不是 8.3文件名?

至少“说”文件扩展名的长度应该是 3 个字符。

0 投票
1 回答
847 浏览

windows - 获取 Dos (8.3) 文件名

我有一个文件名包含“有趣”字符的目录。我想获取文件的 dos (8.3) 文件名。我怎样才能做到这一点?我选择的语言是 Go。

我想获取CW9463~1.PDF文件名而不是cöw.pdf.

(我将使用这个文件名打开一个文件进行阅读。)