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

[其他] 请教一个变量获取的批处理代码

[复制链接]
发表于 2015-4-23 08:58:55 | 显示全部楼层 |阅读模式
txt文件内容如下:
a=1
b=0
c=2
d=3
t=1,2,3
t=332,100,9
t=535,456,43
tnum=3
目前我用的代码是这样的:
  1. for /f %%z in ('findstr /s /i /m "a=1" *.txt') do (
  2. set list=%%z
  3. for /f "tokens=1,* delims=="  %%a in ('find "b" ^< %%z') do (set bb=%%b)
  4. for /f "tokens=1,* delims=="  %%c in ('find "c" ^< %%z') do (set cc=%%d)
  5. for /f "tokens=1,* delims=="  %%e in ('find "d" ^< %%z') do (set dd=%%f)
  6. )
  7. echo !bb! !cc! !dd!
复制代码
我就纠结在t=这3段代码上。
上面的变量参与运行。在我的需求中,这些变量都是用来生成配置文件的。
所以,变量t的部分我是这么做的
在需要变量t部分的时候加入如下代码:
  1. for /f "tokens=1,2,3* delims==, " %%q in ('find "t" ^< !list!') do (
  2. set tt1=%%r
  3. set t2=%%s
  4. set t3=%%t
复制代码
但是这样做有个缺点,就是当执行到变量t的时候第一个for循环没有内容输出。
我想问的是,这个地方有什么可以改进的吗?
发表于 2015-4-23 10:13:50 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1,* delims==" %%a in (cs.txt) do (
  4. set %%a=%%b
  5. echo %%a=%%b
  6. if "%%a"=="t" for /f "tokens=1,2,3 delims=, " %%q in ("%%b") do (set t1=%%q,t2=%%r,t3=%%s
  7. echo t1=%%q,t2=%%r,t3=%%s)
  8. )
  9. pause
复制代码
发表于 2015-4-23 14:07:34 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%z in ('findstr /s /i /m "a=1" *.txt') do (
  4.     for /f "tokens=1,* delims==" %%a in ('findstr "b=" "%%z"') do set bb=%%b
  5.     for /f "tokens=1,* delims==" %%c in ('findstr "c=" "%%z"') do set cc=%%d
  6.     for /f "tokens=1,* delims==" %%e in ('findstr "d=" "%%z"') do set dd=%%f
  7.     echo !bb! !cc! !dd!
  8.     for /f "tokens=1,2,3* delims==, " %%q in ('findstr "t=" "%%z"') do (
  9.         set t1=%%r
  10.         set t2=%%s
  11.         set t3=%%t
  12.         echo !t1! !t2! !t3!
  13.     )
  14. )
  15. pause
复制代码
这个代码的结果和你的需求有何差异吗

评分

参与人数 1技术 +1 收起 理由
chouxia + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-4-24 21:48:38 | 显示全部楼层
没这么测试过。
原来应该这么测试过。忘记当时的代码了。
效果是t1、t2、t3只有最后一行文件中t=的数据。
另外也有个问题,第一轮循环的时候t1、t2、t3没有数据
回头我再测试下
发表于 2015-4-24 22:02:44 | 显示全部楼层
回复 4# chouxia


    “第一轮循环的时候t1、t2、t3没有数据”是指3楼的代码,还是你自己的代码?我测试3楼代码没发现这个问题
 楼主| 发表于 2015-4-25 08:19:52 | 显示全部楼层
3楼的代码我没测试,最近有点小忙。
而且改成3楼代码,整个批处理都要重新调整。16K的代码啊。复杂到是不复杂,东西太多ctrl+c都麻烦。需要找个好时间。
我自己的代码跑第一遍的时候没数据
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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