标题: [文本处理] 【已解决】批处理for /f命令拆解字符串搞丢了文本中的感叹号,请教如何解决? [打印本页]
作者: 52hz 时间: 2024-4-12 11:53 标题: 【已解决】批处理for /f命令拆解字符串搞丢了文本中的感叹号,请教如何解决?
本帖最后由 52hz 于 2024-4-12 13:39 编辑
请教大佬们,我用for /f循环来拆解文本,变量%%b和%%c原本是图片链接,由于开启了变量延迟,拆解后的文本丢失了!!导致链接错误。
为了测试丢失的原因,关闭了变量延迟后链接中的!!就不会丢失了,可是此for循环中还有其它地方是需要使用延迟变量的,这个不能关闭,请问有其他办法解决么?
文本内容如下:- XTC3082228090 https://img.alicdn.com/imgextra/i2/3301937583/O1CN01BLj6Va25t4JSOGUtv_!!3301937583.jpg https://img.alicdn.com/imgextra/i4/3301937583/O1CN012bQDIE25t4JR0chCt_!!3301937583.png
复制代码
代码如下:- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=:" %%N in ('findstr/n ".*" "%~dp0明细复制在这里.txt"')do set "Total=%%N"
- for /f %%I in ('echo prompt $H ^| cmd') do (
- set "BS=%%I%%I%%I%%I%%I"
- )
-
- for /f "tokens=1-3 delims= " %%a in (%~dp01.txt) do (
- set /a X+=1
- set /p "= %BS% ★ 一共【!Total!】个,正在处理第【!X!】个……"<nul
- curl -s "%%b" > "%~dp0白底/%%a.jpg" -H "User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)"
- curl -s "%%c" > "%~dp0透明/%%a.png" -H "User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)"
- set /p "=%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%"<nul
- pause
- )
- set /p "=%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%"<nul
- set /p "= %BS% 图片下载完成!任意键返回主菜单! "<nul
- pause > nul
- exit
复制代码
作者: terse 时间: 2024-4-12 12:44
这样试- for /f "tokens=1-3" %%a in (1.txt) do (
- set url1=%%b
- set url2=%%c
- setlocal enabledelayedexpansion
- echo;!url1!
- echo;!url2!
- endlocal
- )
复制代码
作者: 52hz 时间: 2024-4-12 13:38
回复 2# terse
多谢大佬,明白了,去掉最顶部的全局变量延迟,只在for内需要用到的地方开启
多谢~
作者: 77七 时间: 2024-4-12 13:40
- 或者试试
- 去掉 setlocal enabledelayedexpansion
- call set /p "= %BS% ★ 一共【%Total%】个,正在处理第【%%X%%】个……"<nul
复制代码
作者: 52hz 时间: 2024-4-12 15:55
回复 4# 77七
也可以耶,学到新姿势,前边加个call就可以代替setlocal?看来我要去学一下call了,多谢大佬不吝赐教。
作者: Batcher 时间: 2024-4-12 16:22
回复 5# 52hz
这里有个call的例子:
http://bbs.bathome.net/thread-14852-1-1.html
作者: 52hz 时间: 2024-4-18 10:01
回复 6# Batcher
好的,多谢老大,我学习一下。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |