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

[已完成]30元求解答:%~1传递参数时遇到文件路径错误

本帖最后由 sykIII 于 2019-10-16 22:01 编辑
  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. set /p ="err﹥" <nul
  19. set /p ="%~nx1" <nul
  20. echo,
  21. :next
  22. shift
  23. goto :loop
  24. :done
  25. pause>nul
复制代码
我在使用过程中遇到一些情况让我很感兴趣
有的文件夹名称有特殊符号:比如"1&2"
这种在%~1里传递时会丢失"&"之后的路径,然后导致失败
但是我平时这种情况很少见,后来发现只要前面有空格:" 1&2"或"12 1&2"
就能显示出&号以及后面的路径了

因为比较感兴趣我测试了一下直接echo文件夹" 1&2"的路径
效果是这样
  1. 测试>echo C:\Users\sword\Desktop\测试\ 1  & 2
  2. 测试\ 1
  3. '2' 不是内部或外部命令,也不是可运行的程序
  4. 或批处理文件。
复制代码
求解答一下
以及如何修改才能让这套代码战无不胜

本帖最后由 sykIII 于 2019-10-16 21:31 编辑

回复 2# zaqmlp


希望只显示错误的被处理文件夹的名称
以及希望能去掉引号

TOP

返回列表