[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】批处理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
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 6# Batcher


    好的,多谢老大,我学习一下。

TOP

回复 5# 52hz


这里有个call的例子:
http://bbs.bathome.net/thread-14852-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4# 77七


    也可以耶,学到新姿势,前边加个call就可以代替setlocal?看来我要去学一下call了,多谢大佬不吝赐教。

TOP

  1. 或者试试
  2. 去掉 setlocal enabledelayedexpansion
  3. call set /p "= %BS%             ★ 一共【%Total%】个,正在处理第【%%X%%】个……"<nul
复制代码
bat小白,请多指教!谢谢!

TOP

回复 2# terse


    多谢大佬,明白了,去掉最顶部的全局变量延迟,只在for内需要用到的地方开启
    多谢~

TOP

这样试
  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. )
复制代码
1

评分人数

TOP

返回列表