标题: [其他] 批处理set命令赋值时包含&号怎么办? [打印本页]
作者: a904055262 时间: 2010-4-1 19:27 标题: 批处理set命令赋值时包含&号怎么办?
一个程序调用 这个批处理文件..并传递给它一个网址.例如
http://www.bathome.net/post.php? ... &extra=page%3D1
然后批处理文件中的代码是这样的:- set "url=%~1"
- 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 编辑 ]
作者: yangfengoo 时间: 2010-4-1 19:53
复制代码
作者: bat007 时间: 2010-4-1 20:33
- @echo off
- setlocal enabledelayedexpansion
- set "a=c&b"
- echo !a!
复制代码
作者: vsbat 时间: 2010-4-1 22:49
复制代码
用 ^ 号转义--
[ 本帖最后由 vsbat 于 2010-4-1 22:50 编辑 ]
作者: a904055262 时间: 2010-4-2 00:08
可能是我没说清楚...
set "a=c&b" 中的c&b是从别处传过来的参数,无法更改其本身的.
3楼的方法可用,但是启用的变量延时..这个变量,我会用到有包含 ! 号的文本的处理,而开启了变量延时, ! 就全部会被抛掉了,不行..
还有别的方法没..
真是麻烦大家. 谢谢你们
作者: Batcher 时间: 2010-4-2 02:04 标题: 回复 5楼 的帖子
不是没说清楚,而是根本没提到这些背景。
把你完整的代码贴出来看看吧。
作者: a904055262 时间: 2010-4-2 10:35
更新提问在顶楼,,不知道这下说清楚了没有..
[ 本帖最后由 a904055262 于 2010-4-2 18:21 编辑 ]
作者: bat007 时间: 2010-4-2 22:10
为什么“不要使用变量延时”?
作者: jemuillot 时间: 2012-9-29 23:34
本帖最后由 jemuillot 于 2012-9-29 23:49 编辑
楼主的意思很明确,为什么大家装糊涂呢??
就是参数进来的时候带了“&”号怎么?
转义符号"^"在这种情况下根本不管用的……
我最近在整理GBA的ROM,遇到各种奇怪文件名的,想统一转成固定格式,写了如下脚本:- @echo off
-
- cd /d %~dp0
- set iroot=%cd%
-
- set path="F:\Program Files\7-Zip";%path%
-
- for /f "delims=" %%i in ('dir /b *.zip') do (
-
- call :handle "%%i"
- )
-
- pause
- exit
-
- :handle
-
-
- set input=%1
-
- echo a=%input%
-
-
- set "input=%input:~1,-1%"
-
- echo b="%input%"
-
-
-
- cd %iroot%
-
- rd /s /q uz
-
- 7z x -y "%input%" -o"uz"
-
- set gid=%input:~0,4%
- set "gname=%input:~7,-4%"
-
- echo gid=%gid%
- echo gn="%gname%"
-
-
- cd %iroot%\uz
-
- if exist *.gba goto handle_depth
-
- for /f "delims=" %%i in ('dir /b') do (
- cd "%%i"
- )
-
- :handle_depth
-
-
- for /f "delims=" %%i in ('dir /b *.gba') do (
- copy "%%i" "%iroot%/../%gid%. %gname%.gba"
- )
-
- if not exist *.jpg goto handle_next
-
- for /f "delims=" %%i in ('dir /b *.jpg') do (
- copy "%%i" "%iroot%/../%gid%. %gname%.jpg"
- )
-
- :handle_next
-
-
- goto :eof
复制代码
可以把X目录下,所有的 #### - $$$$$.zip 里头的*.gba和*.jpg
解压出来放置到 X\..\ ####. $$$$$$.gba 和 X\..\ ####. $$$$$$.jpg
不管$$$$$$包含 ! 还是 & 都可以。
GBA大集合就是下载了VeryCD的
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |