标题: [文件操作] [已解决]批处理for命令%%~nxf、%%~nxi有什么区别,怎么会有%%~nxa这种 [打印本页]
作者: lforl 时间: 2024-6-3 11:05 标题: [已解决]批处理for命令%%~nxf、%%~nxi有什么区别,怎么会有%%~nxa这种
%%~nxf、%%~nxi和%%~nxa到底有什么区别?
GPT都解释不太清楚%%~nxa,%%~nxf和%%~nxi的解释还行。
老版主的文章解释:
%%~ni表示获取文件名,%%~xi表示获取扩展名(带点号)……它们可以组合使用,如%%~nxi表示获取文件名和后缀名。
关于%%~nxf和%%~nxi,GPT的解释(一句话一个新,一个老):
%%~ni代表获取文件路径的短文件名部分,不包括扩展名;%%~xi代表获取文件路径的短文件名的扩展名部分,包括点号;%%~nxi代表获取文件路径的短文件名和扩展名部分。
在 Windows 命令提示符中,文件的短文件名是用于兼容旧式 8.3 文件名格式的命名约定。这些短文件名通常以波浪号(~)开头。
在现代的 Windows 环境中如 Windows 10,通常使用长文件名(Long File Name)格式,而不是旧式的 8.3 文件名(Short File Name)格式。
因此,在大多数情况下,使用 %%~nxf 比 %%~nxi 更为适用。%%~nxf 可以直接获取包括文件名和扩展名在内的完整文件名。例如,对于文件路径 "C:\folder\file.txt",%%~nxf 将返回 "file.txt"。
结合正常运转的实际案例:- Windows Registry Editor Version 5.00
-
- [HKEY_CLASSES_ROOT\SystemFileAssociations\.py\Shell\copyNameRunCMD]
- @="复制文件名并开cmd运行窗口"
- "Icon"="imageres.dll,-5372"
-
- [HKEY_CLASSES_ROOT\SystemFileAssociations\.py\Shell\copyNameRunCMD\Command]
-
- @="cmd /V:ON /K For %%a in (\"%1\") do @echo %%~nxa|clip & echo 已复制文件名:%%~nxa,右击粘贴即可运行"
复制代码
这下似乎比较明白了:
%%~nxi——是系统内置的变量%1(当前对象的全路径)的文件名部分%i,取其文件名+扩展名。
%%~nxf——是系统内置的变量%1(当前对象的全路径)的文件名部分%f(针对新系统的长文件名),取其文件名+扩展名。
%%~nxa——是自定义变量%a(由%1获取=当前对象的全路径),nxa意思取%a中的文件名+扩展名。如果变量命名为%r那么写作%%~nxr(这点GPT是糊涂的)
上面i,f,a都是变量。
请路过大佬看下,我这种理解是否正确。
作者: newswan 时间: 2024-6-3 12:26
最后一个字符是 变量名
作者: Batcher 时间: 2024-6-3 13:37
回复 1# lforl
因此,在大多数情况下,使用 %%~nxf 比 %%~nxi 更为适用。
忘掉AI给的这个说法,不要纠结什么长文件名、短文件名。
简单来说,你最后的理解是正确的,到这一步就够了。
作者: Five66 时间: 2024-6-3 16:21
f , i , a只是for中的自变量名字而已 , 只要符合规则 , 随便起
%%~nxq
%%~nxw
%%~nxe
%%~nxr
%%~nx/
%%~nx-
%%~nx^"
%%~nx^^
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |