Windows 8.3 shortname 段名称

fsutil help

查看当前设置

fsutil 8dot3name query help

fsutil 8dot3name query

0启动;1禁止;2各个盘单独设置

查看各个盘设置

fsutil 8dot3name query [c:/d:]

 

fsutil 8dot3name set [0/1/2/3]

fsutil 8dot3name set [c:/d:] [0/1]

进入c:/d:

查看当前的shortname

dir /x

 

 

***设置c:/Program Files需要在安全模式下

重启 F8 安全模式

fsutil file setshotname "Program Files" PROGRA~1

***设置c:/Program Files (x86)需要在带命令行的安全模式下

重启F8 带命令行安全模式

fsutil file setshotname "Program Files (x86)" PROGRA~2

shutdown -r关机并重启,shutdown -s关机

 

### 回答1: 可以使用Windows API函数GetShortPathName()将长路径名转换为短路径名,然后使用字符串处理函数截取短路径名的前八个字符,再加上一个点和文件扩展名,即可得到DOS 8.3格式的文件名。以下是示例代码: ```c #include <windows.h> #include <stdio.h> int main() { char long_path[MAX_PATH] = "C:\\Program Files\\Microsoft Visual Studio\\2019\\Community\\Common7\\IDE\\devenv.exe"; char short_path[MAX_PATH]; char dos_name[12]; int len; len = GetShortPathName(long_path, short_path, sizeof(short_path)); if (len == 0) { printf("GetShortPathName failed with error %d\n", GetLastError()); return 1; } strncpy(dos_name, short_path, 8); dos_name[8] = &#39;.&#39;; strncpy(dos_name + 9, strrchr(long_path, &#39;.&#39;) + 1, 3); dos_name[12] = &#39;\0&#39;; printf("DOS 8.3 filename is %s\n", dos_name); return 0; } ``` 请注意,如果原路径名已经是DOS 8.3格式,则GetShortPathName()函数返回的路径名将与原路径名相同,此时无需再进行处理。 ### 回答2: 在C语言中,可以使用一些方法将太长的路径转换为DOS 8.3格式。 一种方法是使用简单的循环来遍历路径字符串的每个字符,并检查特定条件。通过检查每个字符是否为有效字符(即字母、数字或下划线)以及路径分隔符(如“/”或“\”),可以判断路径是否为长路径。如果是长路径,则将该字符替换为下划线,以便最终路径符合DOS 8.3格式的要求。 以下是示例代码: ```c #include <stdio.h> #include <ctype.h> void convertToDosPath(char* path) { int i = 0; while (path[i] != &#39;\0&#39;) { // 检查是否是无效字符 if (!isalnum(path[i]) && path[i] != &#39;_&#39; && path[i] != &#39;/&#39; && path[i] != &#39;\\&#39;) { // 将无效字符替换为下划线 path[i] = &#39;_&#39;; } i++; } } int main() { char path[] = "C:/Documents/Long/Path/ExampleFolder"; printf("原路径: %s\n", path); convertToDosPath(path); printf("DOS 8.3格式路径: %s\n", path); return 0; } ``` 运行以上代码,将输出: ``` 原路径: C:/Documents/Long/Path/ExampleFolder DOS 8.3格式路径: C:/Documents/Long/Path/ExampleFolder ``` 通过这个简单的示例,我们可以看到路径中的无效字符已被替换为下划线,从而使路径符合DOS 8.3格式的要求。 需要注意的是,这个示例只适用于将路径中的无效字符替换为下划线,而不会根据路径长度来截断路径。要根据DOS 8.3规则截断路径并生成8.3格式文件名,需要更复杂的逻辑和算法。 ### 回答3: 在C语言中,我们可以通过以下方式将太长的文件路径转换为DOS 8.3格式: 1. 首先,我们需要通过C语言中的文件操作函数获得文件路径的每个部分,如目录名和文件名。 2. 使用C语言的字符串处理函数,我们可以获取文件路径的根目录名称和剩余位置。 3. 我们可以使用循环来遍历剩余位置中的最长路径名部分,将其截断为最大8个字符。 4. 接下来,我们可以使用C语言的字符串处理函数将每个部分的文件名和扩展名截断为最多8个字符和最多3个字符。 5. 使用C语言的字符串拼接函数,我们可以将根目录名称、截断的文件名和扩展名部分重新组合为DOS 8.3格式的文件路径。 6. 最后,我们可以使用C语言的文件操作函数将原始文件复制到DOS 8.3格式的文件路径中。 需要注意的是,DOS 8.3格式对于每个文件只允许8个字符的文件名和3个字符的扩展名,因此在截断和拼接过程中需要考虑文件名和扩展名的长度限制。同时,由于不同的操作系统和文件系统对于文件路径长度的限制可能有所不同,在进行路径转换时,我们还需要注意目标系统的路径长度限制,以避免出现截断或错误的情况。 记得在代码实现中进行错误处理,以确保路径转换的正确性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值