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

[文本处理] [已解决] 批处理如何判断两块raid卡目前状态

本帖最后由 ybbpgkfdn 于 2016-10-10 09:29 编辑

刚小弟看回复发现有大神,没看懂小弟的需求!那小弟就写的简单一点。
有两行英文其后面的Optimal是会变化的值。Optimal (代表正常)Uptimal(代表不正常)
我的需求是写一个批处理双击后会输出:[RAID卡一切正常] 或 [RAID10卡不正常],着样的文字提示。
RAID1_State               : Optimal  
RAID10_State               : Optimal   

我目前写到着里出来了很多问题:例如tokens=1,2 它取值是最后一行的两列!!!等等
@echo off  & setlocal enabledelayedexpansion
d:
::type raid.txt | find "State" >A.txt
for /f "tokens=1,2 delims=: " %%i in (A.txt) do set num1=%%i&& set num2=%%j
if "%num2%"=="Optimal" (echo "健康的RAID10") else echo "不健康的RAID10"
echo "%num1%"
echo "%num2%"
pause

不知道大家用过shell没有如果用shell大概写法是着样的
#/bin/bash
RAID=`grep "Optimal|wc -l"`
RAID1=`cat a.txt|awk -F ": " 'NR==1{print $2}'`
RAID10=`cat a.txt|awk -F ": " 'NR==2{print $2}'`
if [ $RAID -eq 2 ]
  then
    echo "RAID卡一切正常"
  else
     if [ "$RAID1" == "Optimal" ]
        then  
           echo "RAID10卡不正常"
        else
           echo "RAID1卡不正常"
     fi
fi
2

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 4
    • pcl_test: 未按版规发帖PB -2

不知所云                                 ~
1

评分人数

判定一个人是否为伸手党的标准是取决于他的态度和诚意。

TOP

  1. @echo off
  2. type "D:\raid.txt" | find "State" >A.txt
  3. for /f "tokens=1,2 delims=: " %%i in (A.txt) do (
  4.     if "%%j"=="Optimal" (
  5.         echo "健康的%%i --- %%j"
  6.     ) else (
  7.         echo "不健康的%%i --- %%j"
  8.     )
  9. )
  10. pause
复制代码
1

评分人数

    • ybbpgkfdn: 感谢给帖子标题标注[已解决]字样技术 + 1

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. type "D:\raid.txt" | find "State" >A.txt
  4. for /f "tokens=1,2 delims=: " %%i in (A.txt) do (
  5.     if "%%j"=="Optimal" (
  6.         echo "健康的%%i --- %%j"
  7.     ) else (
  8.         echo "不健康的%%i --- %%j"
  9.     )
  10.     set "num1=%%i"
  11.     set "num2=%%j"
  12.     echo !num1! !num2!
  13. )
  14. pause
复制代码

TOP

举个栗子
  1. @echo off&setlocal enabledelayedexpansion
  2. set optimal=正常
  3. set uptimal=不正常
  4. for /f "tokens=1-3 delims=_: " %%i in ('more +13 "%~f0"') do (
  5.     if /i "%%k"=="Optimal" set /a n+=1
  6.     set "#%%i=%%k"
  7. )
  8. if "%n%" equ "2" (
  9.     echo;RAID卡一切正常
  10. ) else (
  11.     for /f "tokens=1,2 delims=#=" %%i in ('set #') do echo;%%i!%%j!
  12. )
  13. pause&exit
  14. RAID1_State               : Optimal  
  15. RAID10_State               : Optimal
复制代码
1

评分人数

    • ybbpgkfdn: 感谢给帖子标题标注[已解决]字样技术 + 1

TOP

回复 3# GNU
非常感谢
我不太明白for do()的含义,为什么我不加括号只匹配最后一行的Optimal

TOP

回复 5# pcl_test
非常感谢
太复杂了完全看不懂…………有没有好的书求推荐

TOP

回复 7# ybbpgkfdn


    http://www.bathome.net/thread-5814-1-1.html
居家旅行, 杀人灭口必备手册

TOP

回复 8# Bella

非常谢谢。

TOP

返回列表