无忧启动论坛

标题: ........................ [打印本页]

作者: 527104427    时间: 2014-5-31 19:45
标题: ........................
本帖最后由 527104427 于 2016-8-15 21:29 编辑


http://blog.sina.com.cn/a527104427

http://bbs.wuyou.net/forum.php?m ... d=379244&extra=
作者: sratlf    时间: 2014-5-31 22:15
我是用的循环  逐个参数后面加\
作者: 527104427    时间: 2014-5-31 23:44
sratlf 发表于 2014-5-31 22:15
我是用的循环  逐个参数后面加\

试了一下,这样可以达到效果
  1. !BAT
  2. debug 0
  3. set a=      /a   b    c.iso      
  4. echo .%a%.
  5. call :first
  6. call :last
  7. set d= &; set /a n=0 &; set a=%a% &; set /a c=*0x4cb00 &; set /a c=%c%-1
  8. call :mid
  9. echo .%a%.
  10. goto :eof

  11. ::去前面的空格
  12. :first
  13. set b=%a:~,1%
  14. if "%b%"=="" && set a=%a:~1% ! goto :eof
  15. goto %0


  16. ::去最后面的空格
  17. :last
  18. set b=%a:~-1%
  19. if "%b%"=="" && set a=%a:~,-1% ! goto :eof
  20. goto %0


  21. ::中间的每个空格加反斜杠
  22. :mid
  23. set b=%a:~-1%
  24. if "%b%"=="" && set d=\ %d% ! set d=%b%%%d%
  25. if "%n%"=="%c%" && set a=%d% && exit
  26. set a=%a:~,-1% && set /a n=%n%+1
  27. goto %0
复制代码

作者: sratlf    时间: 2014-6-1 23:00
527104427 发表于 2014-5-31 23:44
试了一下,这样可以达到效果

用下面这样也可以   其实首空格可以不用考虑  只需要考虑尾部含空格的情况
  1. !BAT
  2. debug 0
  3. set tmp=
  4. set newpath=
  5. setlocal
  6. set tmp=/a      c          b       .iso
  7. set length=%@retval%
  8. set n=-1

  9. :start
  10. if not "%tmp:~-1%"==" " && goto :check_blank
  11. set tmp=%tmp:~,-1%
  12. set length=%@retval%
  13. goto :start

  14. :check_blank
  15. if "%n%"=="%length%" && goto :end
  16. set /a n=%n% + 1 > nul
  17. call if "%^tmp:~%%n%%,1%"==" " || goto :check_next
  18. call set newpath=%newpath%\%^tmp:~%%n%%,1%
  19. goto :check_blank

  20. :check_next
  21. call set newpath=%newpath%%%^tmp:~%%n%%,1%
  22. goto :check_blank

  23. :end
  24. endlocal && set newpath=%newpath%
  25. exit
复制代码





欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3