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

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

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循环没有内容输出。
我想问的是,这个地方有什么可以改进的吗?

3楼的代码我没测试,最近有点小忙。
而且改成3楼代码,整个批处理都要重新调整。16K的代码啊。复杂到是不复杂,东西太多ctrl+c都麻烦。需要找个好时间。
我自己的代码跑第一遍的时候没数据

TOP

回复 4# chouxia


    “第一轮循环的时候t1、t2、t3没有数据”是指3楼的代码,还是你自己的代码?我测试3楼代码没发现这个问题
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

没这么测试过。
原来应该这么测试过。忘记当时的代码了。
效果是t1、t2、t3只有最后一行文件中t=的数据。
另外也有个问题,第一轮循环的时候t1、t2、t3没有数据
回头我再测试下

TOP

  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

评分人数

Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

  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
复制代码

TOP

返回列表