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

[其他] [已解决]批处理如何将文档里面某些内容赋予变量?

本帖最后由 博希 于 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楼的意思了,问题也解决了
1

评分人数

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

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

评分人数

    • jellyhk: 代码错误哦!echo off能显示?技术 + 1

TOP

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

评分人数

    • CrLf: 乐于助人PB + 5
本人已死!不用联系!~
要联系下来联系!~~

TOP

回复 2# awk


    有些不明白,为什么不用"echo.%%a",而用了IF呢
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

for /f "tokens=1,* delims=:" %%a in (a.txt) do if /i %%a=INFOSecurity echo;%%b
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 3# jellyhk


谁告诉你不能显示的?

TOP

回复 4# wc726842270


再看看楼主的要求就明白了

TOP

回复 5# cjiabing


你没看懂楼主在问什么

TOP

这个“下一步”很纠结,不过个人想法:还是将%%A赋与一个变量,之后在FOR外作判断
1

评分人数

    • CrLf: 乐于助人PB + 3
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

标题

本帖最后由 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,以后的@都可以省略
1

评分人数

    • CrLf: 乐于助人PB + 5

TOP

原来手机上的,改一下:
  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
复制代码
1

评分人数

    • CrLf: 乐于助人技术 + 1
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 10# bluewing009

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

TOP

返回列表