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

[文件操作] 如何解决拖放/拖曳文件或文件夹到bat文件图标上获取到的路径缺失/不完整的问题

本帖最后由 pcl_test 于 2019-10-20 16:29 编辑

我拿来批量修改文件夹图标的
现在有这个问题,它工作的非常好,但是遇到文件目录带有“&“这种符号,就会不显示之后的字符导致找不到文件
请问怎么解决啊

上代码
  1. @echo off
  2. :loop
  3. if "%~1"=="" goto :done
  4. if not exist "%~1\*.ico" goto :err
  5. del "%~1\desktop.ini" /f /q /ah 1>nul 2>nul
  6. set "dir=%~1"
  7. pushd "%dir%"
  8. for /f "delims=" %%a in ('dir /a-d/b *.ico') do set "icon=%%~nxa"
  9. (echo [.ShellClassInfo]
  10. echo IconResource=%icon%
  11. )>"%dir%\desktop.ini"
  12. attrib +s +h "%dir%\desktop.ini"
  13. attrib +s +h "%icon%"
  14. attrib +r /d "%dir%"
  15. popd
  16. goto :next
  17. :err
  18. echo=err﹥%~nx1
  19. :next
  20. shift
  21. goto :loop
  22. :done
  23. pause>nul
复制代码

回复 2# Batcher


    知道哪行报错,就是所有%~1都不能传递“1&2”这种文件名
尝试了下发现引号扩起来也不行,有点不知所措

TOP

回复 4# Batcher


    是的,是拖放操作。这个批处理能处理大量的文件夹,但是文件名不能有&,其他的没具体尝试但是(和[是没问题的
该怎么改才能让&也能识别呢

TOP

回复 7# WHY


    但是怎么添加到我那串代码里呢,感觉无从下手

TOP

回复  sykIII


    你是“拖放”操作对吧?直接传递参数是没有问题的比如 test.bat "a&b"
Batcher 发表于 2019-10-16 11:35



我自己发现一个现象
在文件目录前加一个空格(比如“1&2”变成“ 1&2”),就能正常回显了
这是什么原理呢

TOP

返回列表