找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28029|回复: 7

[文本处理] 批处理 在文本中加一行文字,如果文本中已有,则不加,以下代码为何不成功?

[复制链接]
发表于 2019-7-21 13:14:50 | 显示全部楼层 |阅读模式
  1. set str=%HOME%
  2. ::%HOME%为系统变量,值为D:\Cad\SPB_16.6
  3. set var=%str:\=/%
  4. rem 因为获取到的路径都是 “右斜杠” , 替换为 “左斜杠”
  5. set "load_b=loadi("%var%/bbbb.txt")"
  6. echo %load_b%
  7. set "a_load=%HOME%\aaaa.txt"
  8. if exist %a_load% (
  9. for /f %%i in (!a_load!) do (
  10. if !load_b!==%%i (
  11.         goto gogogo
  12. )
  13. )
  14. )
  15. echo !load_b!>>!a_load!
  16. :gogogo

  17. ::为了实现将load_b=loadi("%var%/bbbb.txt")这行文字放到aaaa.txt中,若已有这行,则不加
复制代码
发表于 2019-7-21 14:01:25 | 显示全部楼层
  1. set str=%HOME%
  2. ::%HOME%为系统变量,值为D:\Cad\SPB_16.6
  3. set var=%str:\=/%
  4. rem 因为获取到的路径都是 “右斜杠” , 替换为 “左斜杠”
  5. set "load_b=loadi("%var%/bbbb.txt")"
  6. echo %load_b%
  7. set "a_load=%HOME%\aaaa.txt"
  8. if exist %a_load% (
  9. for /f %%i in (%a_load%) do (
  10. if %load_b%==%%i (
  11.         goto gogogo
  12. )
  13. )
  14. )
  15. echo %load_b%>>%a_load%
  16. :gogogo

  17. ::为了实现将load_b=loadi("%var%/bbbb.txt")这行文字放到aaaa.txt中,若已有这行,则不加
复制代码

评分

参与人数 1技术 +1 收起 理由
delray + 1 感谢您的帮助!

查看全部评分

 楼主| 发表于 2019-7-21 15:11:54 | 显示全部楼层
只将变量由!变成%也是不成功的,一开始就是这么写的,不知为啥
发表于 2019-7-22 02:58:40 | 显示全部楼层
如果包含内容所有没空格的话,错误应该在第五行[括号转义试试]和第十行[if内容比对用引号引起来]

评分

参与人数 1技术 +1 收起 理由
delray + 1 很专业!!

查看全部评分

 楼主| 发表于 2019-7-22 11:00:25 | 显示全部楼层
回复 4# /zhqsystem/zhq


第7行:改成 set a_load=%HOME%\aaaa.txt  (这是aaaa.txt的文件路径)
第10行:if变量改成  “%load_b%”==“%%i”
这样真的可以了呢,感谢!!
那还想问一下,如一行里有空格又如何区分呢?怎样以换行符来作为分隔符呢?
发表于 2019-7-23 20:33:08 | 显示全部楼层
回复 5# delray
for/f的完整形式:可以参考for/?解析对应形态
for /f "usebackq skip=0 eol=; tokens=* delims= " %%i in ('""')do

文本内换行符会在for加载后,本次循环终止自动进入下一个循环,不需要分割,一般都是合并,分割行容易 合并行不太容易,论坛里有好多行合并代码块,可以搜索转转大致代码相同,不同的是存在特殊字符合并建议用临时本地缓存方式处理合并[有失败率比变量方式稍低]
 楼主| 发表于 2019-7-26 10:06:55 | 显示全部楼层
回复 6# /zhqsystem/zhq

  试一下,如果文本中已有,还是会重加入一行,后面我用下面语句是可以的:
for /f "delims=LF" %%i in ('""') do
发表于 2019-7-30 18:33:14 | 显示全部楼层
回复 7# delray

   没能理解你要表达什么...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 06:16 , Processed in 0.021528 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表