[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[注册表类] [已解决]cmd做了reg右键改后缀名,如何兼容含空格的文件名?

本帖最后由 lforl 于 2023-12-7 19:17 编辑

做了一个写入reg运行的右键菜单。
目标:右击zip自动改后缀名。
问题:目前只对不含空格的文件有效,对于含空格的文件不生效。疑惑的是,我明明加上引号了,还是没法对有空格的文件名改后缀名成功。
请教大佬,如何使它能兼容含空格的文件名
  1. Windows Registry Editor Version 5.00
  2. ;************************添加文件夹右键zip→7z功能*************************
  3. [HKEY_CLASSES_ROOT\.zip]
  4. @="CompressedFolder"
  5. [HKEY_CLASSES_ROOT\.zip\CompressedFolder]
  6. [HKEY_CLASSES_ROOT\.zip\CompressedFolder\ShellNew]
  7. "Data"=hex:50,4b,03,04
  8. [HKEY_CLASSES_ROOT\.zip\ShellNew]
  9. "Data"=hex:50,4b,03,04
  10. [HKEY_CLASSES_ROOT\SystemFileAssociations\.zip\Shell]
  11. [HKEY_CLASSES_ROOT\SystemFileAssociations\.zip\Shell\ChangeTo7z]
  12. @="改后缀名zip→7z(&Z)"
  13. [HKEY_CLASSES_ROOT\SystemFileAssociations\.zip\Shell\ChangeToUVZ\Command]
  14. @="cmd /c for %%I in (\"%1\") do ren \"%%I\" \"%%~nI.7z\"& exit"
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. @="cmd /c for /f \"delims=\" %%I in (\"%1\") do ren \"%%~I\" \"%%~nI.7z\"&exit"
复制代码
1

评分人数

    • lforl: 谢谢大佬,完美解决!技术 + 1
bat小白,请多指教!谢谢!

TOP

本帖最后由 lforl 于 2023-12-7 19:18 编辑

回复 2# 77七

领教了,非常完美,深表感谢!


扩展说明,以让后来者轻松了解。
delims=是for /f命令中的字符分切的开关,如果=号后面为空,就意味着不分切;如果指定字符,就意味着以那指定字符作为分切。

在 CMD 的 for /F 命令中,delims= 选项用于指定分隔符。分隔符是用于将文本行分割成多个部分(或“令牌”)的字符。
通过 delims= 选项,你可以指定一个或多个自定义分隔符。例如:
delims=, 会使用逗号作为分隔符。
delims=; 会使用分号作为分隔符。
delims=,; 会同时使用逗号和分号作为分隔符。
如果你设置 delims= 但后面没有跟任何字符(即 delims= 后面为空),这意味着整行都被视为一个单独的令牌,不进行任何分割。

参考:
CMD的for /F 的delims=选项
https://zhuanlan.zhihu.com/p/645244411?utm_id=0

【CMD】批处理 For 语句从入门到精通(完整版)_20101225
https://blog.csdn.net/qq_43155814/article/details/129780068

TOP

回复 3# lforl


    CSDN是从这里抄的 http://bbs.bathome.net/thread-2189-1-1.html
1

评分人数

    • lforl: 谢谢,很赞!技术 + 1
测试代码之前请做好备份

TOP

返回列表