名为“*”的文件夹

名为“*”的文件夹

浏览旧硬盘时,我偶然发现了一个名为 * 的文件夹:

星星

我无法从 Windows 打开、访问或重命名它。

Windows 错误

我尝试通过 Moba Xterm 访问它,在那里我得到了

ls -l
ls: ./*: No such file or directory
cp \* star
cp: can't stat '*': No such file or directory

它损坏了吗?有办法修复吗?

答案1

*是 Windows 文件名中不允许使用的字符之一(因为 Windows 上的文件系统会进行通配符扩展)。但是,NTFS 上通常允许使用通配符,因此存在这样的目录并不表示文件系统损坏,而只是表示目录是使用不同的操作系统创建的。

尝试使用\\?\Cmd 中的 NT 路径重命名它:

move \\?\E:\██████████████\* \\?\E:\██████████████\badfolder

(在这种情况下特别使用“move”而不是“ren(ame)”,因为后者对 * 字符有自己的特殊处理。)

如果这没有帮助,请将磁盘连接到运行 Linux 的系统,或尝试通过 WSL 访问它。甚至 WSL1 也可能有效,因为它绕过了所有高级 Windows API。

(例如,MobaXterm 或 git-bash 中的 Linux 工具的 Windows 移植版不会有太大帮助,因为它们仍然是普通的视窗程序最终会崩溃,并且仍然受到相同的限制。另一方面,WSL1 和旧的 Interix/SfU 工具是与 Win32 完全不同的“子系统”,仅共享内核,但不受文件名限制的影响。)

答案2

虽然听起来你最终通过使用 WSL 解决了这个问题,但我认为你可以在不安装 WSL/Cygwin 的情况下通过使用8.3 简称文件夹。

要从资源管理器中获取cmd当前目录中的提示符,可以使用文件菜单中的“打开 Windows Powershell”选项,然后输入cmd要切换到的 shell cmd.exe

打开 Windows PowerShell

运行dir /x列出当前目录的上下文并获取名为 的文件夹的短名称*,然后通过其短名称引用该文件夹以对其进行ren命名。

我使用 WSL 在我的 Windows 文件系统上创建了一个以该名称命名的文件夹*,然后按照上述步骤确定其与 DOS 兼容的短名称(21BA~1在本例中),然后star使用以下命令重命名它cmd.exe

PS C:\Users\Nick\Scripts> cmd
Microsoft Windows [Version 10...]
(c) Microsoft Corporation. All rights reserved.

C:\Users\Nick\Scripts>dir /x
 Volume in drive C has no label.
 Volume Serial Number is ABCD-1234

 Directory of C:\Users\Nick\Scripts

03/11/2022  05:26 PM    <DIR>                       .
03/11/2022  05:26 PM    <DIR>                       ..
10/10/2020  04:30 PM             1,225 PORT-F~1.PS1 port-forward.ps1
03/11/2022  05:26 PM    <DIR>          21BA~1       
               1 File(s)          1,225 bytes
               3 Dir(s)  166,006,308,864 bytes free

C:\Users\Nick\Scripts>ren 21BA~1 star

C:\Users\Nick\Scripts>dir
 Volume in drive C has no label.
 Volume Serial Number is ABCD-1234

 Directory of C:\Users\Nick\Scripts

03/11/2022  05:40 PM    <DIR>          .
03/11/2022  05:40 PM    <DIR>          ..
10/10/2020  04:30 PM             1,225 port-forward.ps1
03/11/2022  05:26 PM    <DIR>          star
               1 File(s)          1,225 bytes
               3 Dir(s)  166,006,243,328 bytes free

答案3

fwiw 一个简单的解决方案是安装赛格威并用它重命名文件夹。假设你的文件夹路径是C:\Users\hans\Desktop\*,打开 Cygwin 终端并写入

cd 'C:\Users\hans\Desktop'
mv '*' 'star'

瞧,你的文件夹现在名为 star,而不是*

相关内容