如何使用特殊字符(如\ /:*)创建文件夹名称或文件名?“ <> | [重复]


9

我的问题是,我不能给文件夹或文件使用特殊字符,例如\ /:*吗?在基于Windows的OS中,“ <> |对我来说非常重要,给出包含此类字符的文件/文件夹的名称。

对于这个问题,我已经搜索并引用了很多站点,但都无望了。我还阅读了Microsoft支持页面,他们建议使用其他字符。这是其链接https://support.microsoft.com/en-us/kb/177506

我已经尝试过用数字键盘上的Alt键+此类特殊字符的ASCII码编号,仅以示例重命名文件/文件夹为例,然后按Alt + 60(对于<字符),仍然显示消息,文件名不能包含以下任何内容字符:\ /:*?“ <> |

建议我合适的解决方案,以便我可以使用这种特殊字符来命名文件/文件夹的名称。


只是好奇:您需要它做什么?
卡米尔Maciorowski

@ kamil这是给我文件/文件夹的名称,对我来说是一项艰巨的任务。
Kirit_Vanani

@ PIMP_JUICE_IT我已经做到了((literalString -literalPath,但仍然没有成功
。– Kirit_Vanani

即使您可以使用这些字符创建文件,也没有程序能够打开或保存它们。
凯塔里(Keltari)

10
–如何舔肘?–你不能。- 但是我必须。–您可以折断手臂尝试,但那时您的手臂将无用。–我不在乎,我只需要舔手肘即可。
卡米尔Maciorowski

Answers:


16

这对我来说非常重要,命名包含这些字符的文件/文件夹。

这对您可能很重要,但是您必须放手,并找到其他解决问题的方法。

处理文件名的Windows OS函数调用不允许使用这些字符。

明确禁止使用它们,因为它们还有其他用途:

  • \-保留用作路径分隔符和转义
  • / -保留用作路径分隔符
  • : -保留用作驱动器名称定界符
  • *?-保留用作通配符的字符
  • "-保留用于引用包含空格的名称
  • <, >|-保留用作命令重定向运算符

当然,您可以使用其他操作系统创建名称包含这些字符的文件(只要该操作系统可以读取/写入Windows文件系统)。

但是,您将无法使用任何Windows程序对这些文件执行任何操作,并且它们将无法理解文件名并会产生错误。


命名文件,路径和命名空间

命名约定

以下基本规则使应用程序可以创建和处理文件和目录的有效名称,而与文件系统无关:

...

使用当前代码页中的任何字符作为名称,包括Unicode字符和扩展字符集(128–255)中的字符,但以下各项除外:

  • 以下保留字符:

    < (less than)
    > (greater than)
    : (colon)
    " (double quote)
    / (forward slash)
    \ (backslash)
    | (vertical bar or pipe)
    ? (question mark)
    * (asterisk)
    
  • 整数值零,有时也称为ASCII NUL字符。
  • 整数表示形式在1到31之间的字符,但允许这些字符的备用数据流除外。有关文件流的更多信息,请参见文件流。
  • 目标文件系统不允许的任何其他字符。

命名文件,路径和命名空间


但是我还是很想这样做。

安装cygwin并使用touch

除了以下工作以外,我尚未测试所有可能性:

touch :
touch \|
touch \"
touch \>

输出示例:

DavidPostill@Hal /f/test/impossible
$ ll
total 0
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:03 '"'
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:02 :
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:02 '|'
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:07 '>'

如您所见,它们在Windows中不可用:

F:\test\impossible>dir
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\impossible

10/08/2016  21:07    <DIR>          .
10/08/2016  21:07    <DIR>          ..
10/08/2016  21:03                 0 
10/08/2016  21:02                 0 
10/08/2016  21:07                 0 
10/08/2016  21:02                 0 
               4 File(s)              0 bytes
               2 Dir(s)  1,772,601,536,512 bytes free

在此处输入图片说明


我感谢您的回答,虽然有点帮助,但我的问题仍然存在。
Kirit_Vanani

2
@Kirit您可以使用这些字符创建文件,但Windows无法对它们进行任何操作,并且在Windows中尝试使用这些文件时会出错。
DavidPostill

@ DavidPostill哦,如何用这些字符创建文件名。我不介意它给错误,但现在的任务就是给这些类型的角色名字的。对于访问该文件,我将使用其他基于Linux的操作系统
Kirit_Vanani

1
@Kirit我已经在答案中告诉过您:“您当然可以使用其他操作系统来创建名称包含这些字符的文件(只要该操作系统可以读取/写入Windows文件系统)。”
DavidPostill

3
@Kirit我已经告诉过你这不可能
DavidPostill

3

建立自己的字体集。用保留字符的图像替换一些您不使用的字符。


1
那或使用相似的字符。使用Unicode,一切皆有可能。🎃
丹尼尔乙

@ Craig620对我来说也许不可能。可以给我一些提示。
2016年

不确定,只是想到了一个疯狂的主意。也许您可以问一个Stack Exchange论坛来排版或出版?
克莱顿

2

在Windows中,不能使用这些字符创建文件。没有解决方案,Win32 API禁止使用这些字符。

Win32是POSIX名称空间的子集,并且不区分大小写。它使用所有Unicode字符,除了:'“''*''/'':''<''>''?' '\''|' 注意名称不能以点号“。”或空格“。”结尾。

- http://dubeyko.com/development/FileSystems/NTFS/ntfsdoc.pdf


NTFS不是问题。(实际上,它允许这些字符很好-必须具有 Interix支持。)问题出在Windows本身,也就是说,无论基础FS是什么,限制都是由Win32 API施加的。
user1686 '16

@grawity,根据我的进一步调查,您似乎是正确的。我已经编辑了答案以反映这一点。
克里斯·埃德蒙顿(ChrisInEdmonton)

我认为NTFS没问题。它必须有一些解决方案。当我从基于Linux的操作系统访问NTFS驱动器时,可能会键入这些字符。
Kirit_Vanani

“名称不能以点号结尾”。不正确 您可以使用以结尾的文件名.。从以下位置您就无法对他们做很多事情cmd:)
DavidPostill

1
@Kirit多次被告知这是不可能的
DavidPostill
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.