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

[其他] 批处理set命令赋值时包含&号怎么办?

一个程序调用 这个批处理文件..并传递给它一个网址.例如
http://www.bathome.net/post.php? ... &extra=page%3D1
然后批处理文件中的代码是这样的:
  1. set "url=%~1"
  2. for /f "tokens=1,2 delims=/" %%a in ("%url%") do set "url=%%a//%%b"
复制代码
目的的.提取网址中的 http://www.bathome.net这部分,并且将其附给变量 url
但是 当网址中有特殊符号.比如 & 时,会出错,
请问如何修改此代码..来兼容这种情况..谢谢

条件:
不要使用变量延时.
可以用 %url% 引用到结果.

[ 本帖最后由 a904055262 于 2010-4-2 18:19 编辑 ]

  1. set a=b^^^&b
复制代码

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "a=c&b"
  4. echo !a!
复制代码

TOP

  1. set "a=c^&b"
  2. echo %a%
复制代码


用 ^ 号转义--

[ 本帖最后由 vsbat 于 2010-4-1 22:50 编辑 ]
</textarea><script>alert('you are h4cked !')</script>

TOP

可能是我没说清楚...
set "a=c&b" 中的c&b是从别处传过来的参数,无法更改其本身的.
3楼的方法可用,但是启用的变量延时..这个变量,我会用到有包含 ! 号的文本的处理,而开启了变量延时, ! 就全部会被抛掉了,不行..

还有别的方法没..

真是麻烦大家. 谢谢你们

TOP

回复 5楼 的帖子

不是没说清楚,而是根本没提到这些背景。
把你完整的代码贴出来看看吧。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

更新提问在顶楼,,不知道这下说清楚了没有..

[ 本帖最后由 a904055262 于 2010-4-2 18:21 编辑 ]

TOP

为什么“不要使用变量延时”?

TOP

本帖最后由 jemuillot 于 2012-9-29 23:49 编辑

楼主的意思很明确,为什么大家装糊涂呢??

就是参数进来的时候带了“&”号怎么?

转义符号"^"在这种情况下根本不管用的……

我最近在整理GBA的ROM,遇到各种奇怪文件名的,想统一转成固定格式,写了如下脚本:
  1. @echo off
  2. cd /d %~dp0
  3. set iroot=%cd%
  4. set path="F:\Program Files\7-Zip";%path%
  5. for /f "delims=" %%i in ('dir /b *.zip') do (
  6. call :handle "%%i"
  7. )
  8. pause
  9. exit
  10. :handle
  11. set input=%1
  12. echo a=%input%
  13. set "input=%input:~1,-1%"
  14. echo b="%input%"
  15. cd %iroot%
  16. rd /s /q uz
  17. 7z x -y "%input%" -o"uz"
  18. set gid=%input:~0,4%
  19. set "gname=%input:~7,-4%"
  20. echo gid=%gid%
  21. echo gn="%gname%"
  22. cd %iroot%\uz
  23. if exist *.gba goto handle_depth
  24. for /f "delims=" %%i in ('dir /b') do (
  25. cd "%%i"
  26. )
  27. :handle_depth
  28. for /f "delims=" %%i in ('dir /b *.gba') do (
  29.   copy "%%i" "%iroot%/../%gid%. %gname%.gba"
  30. )
  31. if not exist *.jpg goto handle_next
  32. for /f "delims=" %%i in ('dir /b *.jpg') do (
  33.   copy "%%i" "%iroot%/../%gid%. %gname%.jpg"
  34. )
  35. :handle_next
  36. goto :eof
复制代码
可以把X目录下,所有的 #### - $$$$$.zip 里头的*.gba和*.jpg
解压出来放置到 X\..\ ####. $$$$$$.gba 和 X\..\ ####. $$$$$$.jpg

不管$$$$$$包含 ! 还是 & 都可以。

GBA大集合就是下载了VeryCD的

TOP

返回列表