标题: [文本处理] [已解决]新手问几个批处理问题:变量的获取和赋值 [打印本页]
作者: hxx 时间: 2020-4-7 18:33 标题: [已解决]新手问几个批处理问题:变量的获取和赋值
本帖最后由 hxx 于 2020-4-7 21:55 编辑
问题一:
set /p url=
取一个网页。
例如:http://www.bathome.net/post.php?action=newthread&fid=5
set /p url=http://www.bathome.net/post.php?action=newthread&fid=5
提取set中的内容输出为
赋值%A%=http://www.bathome.net
赋值%B%=post.php
赋值%C%=newthread
*我是想自己复制一个完整的链接 喂给cmd 让CMD帮我提取这个网址中有用的信息 分别赋值为 参数A 参数B 参数C
问题二:
我知道从文件`1.txt`取内容生成文本`2.txt`
for /f "delims=" %%i in (1.txt) do echo %%i>> 2.txt
如果 我还从 两个文件中提取内容应该怎么写阿
a.txt a里面的内容为固定内容 例如 123 (但是需要获取)
b.txt b里面为分段内容 1 ,2 ,3
合并生成c.txt 文本内容为
1231
1232
1233
跟上面那个比较 ,这里需要提取两个文本,两种变量所以搞得稀里糊涂的。
谢谢大佬们赐教, 百度搜不到了。 头疼。
作者: went 时间: 2020-4-7 19:47
注释很详细,ANSI保存
1.- @echo off
- REM 输入url
- set /p "url=copy url:"
- REM 多个字符分割,按需要截取分段
- for /f "tokens=1,2,3,5 delims=/?=&" %%i in ("%url%") do (
- set "A=%%i//%%j"
- set "B=%%k"
- set "c=%%l"
- )
- echo %A%
- echo %B%
- echo %C%
- pause&exit
复制代码
2.- @echo off
- if exist c.txt del c.txt
- REM 如果a.txt只有一行内容,可以用set /p读取到变量
- REM %a%=123
- set /p a=<"a.txt"
- REM for /f 读取b.txt内容,用","分割提取你的分段内容, %%i %%j %%k依次对应第1-3段内容
- for /f "tokens=1-3 delims=," %%i in (b.txt) do (
- REM 合并a.txt的一行内容并输出
- echo %a%%%i >>c.txt
- echo %a%%%j >>c.txt
- echo %a%%%k >>c.txt
- )
- pause&exit
复制代码
作者: hxx 时间: 2020-4-7 21:06
本帖最后由 hxx 于 2020-4-7 21:08 编辑
回复 2# went
谢谢大佬
如果是 https://XXXXXXX/A/B/C/D/E/F/?rootId=zzzzzzz
变量A 没问题。
中间这段 不管 /A/B/C/ 还是 /A/B/ 又或者是 /A/B/C/D/ 怎么可以把一整段拿下来。
最后一段我也取不到 想要 rootid= 后面的数值。 zzzzzz部分
其实案例1 已经写的有点通透了。 但是我基础太差,理解不了分段
作者: Batcher 时间: 2020-4-7 21:39
回复 3# hxx - @echo off
- set url=https://XXXXXXX/A/B/C/D/E/F/?rootId=zzzzzzz
- for /f "tokens=1-2 delims=/" %%a in ("%url%") do (
- set "A=%%a//%%b"
- )
- echo,%A%
-
- call set "B=%%url:%A%=%%"
- for /f "delims=?" %%a in ("%B%") do (
- set "B=%%a"
- )
- echo,%B%
-
- for /f "tokens=2 delims==" %%a in ("%url%") do (
- set "C=%%a"
- )
- echo,%C%
- pause
复制代码
作者: went 时间: 2020-4-7 21:41
回复 3# hxx
截取 ...//.../.../?xx=xx格式的通用- @echo off
- REM 输入url
- REM "https://XXXXXXX/A/B/C/D/E/F/?rootId=zzzzzzz"
- set /p "url=copy url:"
- REM /分隔,取第1,2段
- REM %%i=https: %%j=XXXXXXX
- for /f "tokens=1,2 delims=/" %%i in ("%url%") do set "A=%%i//%%j"
- REM ?分隔,取第一段
- REM %%i=https://XXXXXXX/A/B/C/D/E/F/
- for /f "tokens=1 delims=?" %%i in ("%url%") do set "B=%%i"
- REM 替换
- call set "B=%%B:%A%=%%"
- REM =分隔,取第二段
- REM %%i=zzzzzzz
- for /f "tokens=2 delims==" %%i in ("%url%") do set "C=%%i"
-
- echo %A%
- echo %B%
- echo %C%
- pause&exit
复制代码
用for截取的字符串要有通用的格式,没规律的要根据实际截取
作者: hxx 时间: 2020-4-7 21:55
这个论坛真的是 太友好了。感谢以上大佬。 剩下的 ,我可以举一反三了。
作者: hxx 时间: 2020-4-7 22:19
本帖最后由 hxx 于 2020-4-7 23:04 编辑
已编辑已编辑
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |