找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30476|回复: 8

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

[复制链接]
发表于 2010-4-1 19:27:12 | 显示全部楼层 |阅读模式
一个程序调用 这个批处理文件..并传递给它一个网址.例如
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 编辑 ]
发表于 2010-4-1 19:53:10 | 显示全部楼层
  1. set a=b^^^&b
复制代码
发表于 2010-4-1 20:33:24 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "a=c&b"
  4. echo !a!
复制代码
发表于 2010-4-1 22:49:04 | 显示全部楼层
  1. set "a=c^&b"
  2. echo %a%
复制代码


用 ^ 号转义--

[ 本帖最后由 vsbat 于 2010-4-1 22:50 编辑 ]
 楼主| 发表于 2010-4-2 00:08:19 | 显示全部楼层
可能是我没说清楚...
set "a=c&b" 中的c&b是从别处传过来的参数,无法更改其本身的.
3楼的方法可用,但是启用的变量延时..这个变量,我会用到有包含 ! 号的文本的处理,而开启了变量延时, ! 就全部会被抛掉了,不行..

还有别的方法没..

真是麻烦大家. 谢谢你们
发表于 2010-4-2 02:04:06 | 显示全部楼层

回复 5楼 的帖子

不是没说清楚,而是根本没提到这些背景。
把你完整的代码贴出来看看吧。
 楼主| 发表于 2010-4-2 10:35:19 | 显示全部楼层
更新提问在顶楼,,不知道这下说清楚了没有..

[ 本帖最后由 a904055262 于 2010-4-2 18:21 编辑 ]
发表于 2010-4-2 22:10:06 | 显示全部楼层
为什么“不要使用变量延时”?
发表于 2012-9-29 23:34:01 | 显示全部楼层
本帖最后由 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的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 18:28 , Processed in 0.019749 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表