Board logo

标题: [其他] [已解决]批处理如何将文档里面某些内容赋予变量? [打印本页]

作者: 博希    时间: 2011-12-17 23:20     标题: [已解决]批处理如何将文档里面某些内容赋予变量?

本帖最后由 博希 于 2011-12-20 22:16 编辑

求助,我在批处理获取设备信息内容如下,输出内容为a.txt
INFOversion: 0.5
INFOversion-bootloader: 6.13.1002
INFOversion-baseband: 3805.04.03.27_M
INFObattery-status: good
INFObattery-voltage: 3796mV
INFOpartition-layout: Generic
INFOsecurity: off
INFObuild-mode: SHIP
INFOboot-mode: FASTBOOT
INFOcommitno-bootloader: dirty-8a731c6e
INFOhbootpreupdate: 12
INFOgencheckpt: 0

如何将INFOsecurity: 后面的值设为变量,我需要判断获取后,后面的值是on还是off来决定下一步

说的不好,解释不清的话,请多包涵,刚接触这个

感谢2楼和3楼朋友的热心回答,虽然不能解决,但也给了我一个思路
5楼的版主,我使用你的代码提示 此时不应有 =INFOSecurity。
我不知道怎么回事,可能我不会使用吧,我刚接触这个,只会一些简单的,感谢你的回答

还有一个疑问,我看到一个批处理,命令前面加了@,
我只懂@ceho 显示的文字,命令也可以用@吗?这个作用是什么?
例:
  1. @echo pushing files with adb..
  2. @echo ..
  3. @adb push flash_image /data/local/tmp/flash_image
  4. @adb shell chmod 777 /data/local/tmp/flash_image
  5. @adb push recovery.img /data/local/tmp/recovery.img
  6. @echo ..
  7. @echo ..
  8. @echo writing recovery..
  9. @adb shell su -c "/data/local/tmp/flash_image recovery /data/local/tmp/recovery.img"
  10. @echo ..
  11. @echo removing leftover files..
  12. @adb shell rm /data/local/tmp/flash_image
  13. @adb shell rm /data/local/tmp/recovery.img
  14. @echo finished
  15. @echo No Errors? Then it should have worked.. reboot into recovery to check
  16. @pause
复制代码
感谢所有朋友的热心回答,让我学习了很多

谢谢各位的帮助,我看了namejm发的 批处理for语句从入门到精通
终于理解5楼的意思了,问题也解决了
作者: awk    时间: 2011-12-18 09:54

  1. @echo off
  2. for /f "tokens=2" %%a in ('findstr "^INFOsecurity:" a.txt') do (
  3.     if "%%a" equ "on" (
  4.         echo,on
  5.     ) else if "%%a" equ "off" (
  6.         echo,off
  7.     ) else (
  8.         echo,not on/off
  9.     )
  10. )
复制代码

作者: jellyhk    时间: 2011-12-18 10:28

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=2" %%a in (a.txt) do (
  4.   set /a a+=1
  5.   if !a! == 7 echo [%%a]
  6. )
  7. pause
复制代码

作者: wc726842270    时间: 2011-12-18 11:35

回复 2# awk


    有些不明白,为什么不用"echo.%%a",而用了IF呢
作者: cjiabing    时间: 2011-12-18 11:43

for /f "tokens=1,* delims=:" %%a in (a.txt) do if /i %%a=INFOSecurity echo;%%b
作者: awk    时间: 2011-12-18 11:47

回复 3# jellyhk


谁告诉你不能显示的?
作者: awk    时间: 2011-12-18 11:48

回复 4# wc726842270


再看看楼主的要求就明白了
作者: awk    时间: 2011-12-18 11:48

回复 5# cjiabing


你没看懂楼主在问什么
作者: wc726842270    时间: 2011-12-18 11:55

这个“下一步”很纠结,不过个人想法:还是将%%A赋与一个变量,之后在FOR外作判断
作者: bluewing009    时间: 2011-12-19 08:38     标题: 标题

本帖最后由 bluewing009 于 2011-12-19 08:42 编辑

回复 1# 博希


    思路:利用findstr找到INFOsecurity取值即可
爪机,写代码困难……没测试

@echo off
for /f "tokens=2" %%a in ('findstr "INFOsecurity" a.txt') do echo %%a
5L回答,请把%%a=改为%%a==
@是表示不回显,只要在文件开头加上@echo off,以后的@都可以省略
作者: cjiabing    时间: 2011-12-19 12:10

原来手机上的,改一下:
  1. for /f "tokens=1,* delims=:" %%a in (a.txt) do if /i %%a=INFOsecurity if /i %%b==on (echo on)&if /i %%b==off echo off
  2. pause
复制代码

作者: qq2501    时间: 2011-12-19 20:20

回复 10# bluewing009

我替你补全了
  1. @echo off
  2. for /f "usebackq tokens=2" %%a in (`findstr "INFOsecurity" a.txt`) do echo.%%a
  3. pause
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2