Board logo

标题: [文本处理] 【已解决】批处理for /f命令拆解字符串搞丢了文本中的感叹号,请教如何解决? [打印本页]

作者: 52hz    时间: 2024-4-12 11:53     标题: 【已解决】批处理for /f命令拆解字符串搞丢了文本中的感叹号,请教如何解决?

本帖最后由 52hz 于 2024-4-12 13:39 编辑

请教大佬们,我用for /f循环来拆解文本,变量%%b和%%c原本是图片链接,由于开启了变量延迟,拆解后的文本丢失了!!导致链接错误。
为了测试丢失的原因,关闭了变量延迟后链接中的!!就不会丢失了,可是此for循环中还有其它地方是需要使用延迟变量的,这个不能关闭,请问有其他办法解决么?
文本内容如下:
  1. XTC3082228090 https://img.alicdn.com/imgextra/i2/3301937583/O1CN01BLj6Va25t4JSOGUtv_!!3301937583.jpg https://img.alicdn.com/imgextra/i4/3301937583/O1CN012bQDIE25t4JR0chCt_!!3301937583.png
复制代码
代码如下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=:" %%N in ('findstr/n ".*" "%~dp0明细复制在这里.txt"')do set "Total=%%N"
  4. for /f %%I in ('echo prompt $H ^| cmd') do (
  5.     set "BS=%%I%%I%%I%%I%%I"
  6. )
  7. for /f "tokens=1-3 delims= " %%a in (%~dp01.txt) do (
  8.     set /a X+=1
  9.     set /p "= %BS%             ★ 一共【!Total!】个,正在处理第【!X!】个……"<nul
  10.     curl -s "%%b" > "%~dp0白底/%%a.jpg" -H "User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)"
  11.     curl -s "%%c" > "%~dp0透明/%%a.png" -H "User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)"
  12. set /p "=%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%"<nul
  13. pause
  14. )
  15. set /p "=%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%"<nul
  16. set /p "= %BS%             图片下载完成!任意键返回主菜单!            "<nul        
  17. pause > nul
  18. exit
复制代码

作者: terse    时间: 2024-4-12 12:44

这样试
  1. for /f "tokens=1-3" %%a in (1.txt) do (
  2.      set url1=%%b
  3.      set url2=%%c
  4.      setlocal enabledelayedexpansion
  5.      echo;!url1!
  6.      echo;!url2!
  7.      endlocal
  8. )
复制代码

作者: 52hz    时间: 2024-4-12 13:38

回复 2# terse


    多谢大佬,明白了,去掉最顶部的全局变量延迟,只在for内需要用到的地方开启
    多谢~
作者: 77七    时间: 2024-4-12 13:40

  1. 或者试试
  2. 去掉 setlocal enabledelayedexpansion
  3. 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://www.bathome.net/) Powered by Discuz! 7.2