jet7253 发表于 2012-4-20 22:05:45

截取的DOS出来的字串符 To Ini

本帖最后由 jet7253 于 2012-4-21 19:28 编辑

小弟想劫取的DOS底下的文字
是不是可以请懂的大大们
随便劫取一行给小弟一个例子就行了......(这是DOS的指令)
以以下出现的字符教教小弟
因为关于DOS的标题的文章不多......
所以贸昧的发表问题一下
希望大大们不吝赐教
十分感谢
C:\>Bcdedit

Windows Boot Manager
--------------------
identifier            {bootmgr}
device                  partition=C:
description             Windows Boot Manager
locale                  zh-TW
inherit               {globalsettings}
default               {current}
resumeobject            {78bd8f43-b351-11de-b4a3-889719df90c1}
displayorder            {current}
                        {78bd8f47-b351-11de-b4a3-889719df90c1}
toolsdisplayorder       {memdiag}
timeout               1

Windows的开机载入器
-------------------
identifier            {current}
device                  partition=C:
path                  \Windows\system32\winload.exe
description             Windows 7
locale                  zh-TW
inherit               {bootloadersettings}
recoverysequence      {78bd8f45-b351-11de-b4a3-889719df90c1}
recoveryenabled         Yes
osdevice                partition=C:
systemroot            \Windows
resumeobject            {78bd8f43-b351-11de-b4a3-889719df90c1}
nx                      OptIn
numproc               4
usefirmwarepcisettingsNo

真实模式开机磁区
---------------------
identifier            {78bd8f47-b351-11de-b4a3-889719df90c1}
device                  partition=C:
path                  \NST\NeoGrub.mbr
description             NeoGrub Bootloader

kevinch 发表于 2012-4-20 22:20:12

Bcdedit>result.txt
利用输出重定向把结果输出到文本文件里,然后再处理

lpxx 发表于 2012-4-20 22:39:03

应该叫截取比较恰当

zch11230 发表于 2012-4-21 01:22:04

发个别人给的示例 感觉挺不错的。


#include <Constants.au3>
$foo = Run("bcdedit.exe", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
ProcessWaitClose($foo)
$text=StdoutRead($foo)
MsgBox(0, "STDOUT read:", $text)

kakinkgb 发表于 2008-7-26 21:04 http://www.autoitx.com/images/common/back.gif

haijie1223 发表于 2012-4-21 03:58:45

论坛置顶帖,有个FAQ。真的很少有人会去看了。。。

jet7253 发表于 2012-4-21 12:34:55

本帖最后由 jet7253 于 2012-4-21 13:23 编辑

论坛置顶帖,有个FAQ。真的很少有人会去看了。。。
haijie1223 发表于 2012-4-21 03:58 http://www.autoitx.com/images/common/back.gif

有看过但不会用请见谅 , 怎么截都截不到我要的......
我会再试试的...

zch11230 大
谢谢.
截取出来MSGBOX是空白的不知道是不是我用错了
使用IPCONFIG.EXE会截出IP等资料 用BCDEDIT.exe会变空白
使用环境为win7x64

zch11230 发表于 2012-4-21 14:48:31

回复 6# jet7253


    我也是WIN7 X64 可以直接运行你先试试直接在CMD下运行有没有反映,或者加上绝对路径试试。

jet7253 发表于 2012-4-21 18:17:50

无法开启开机设定资料存放区。
存取被拒。
看来是我自己电脑不能执行的问题
直接在命令列下可以有作用
但是CMD下就不行了
难怪截取不到了
但还是谢谢你的帮忙
感激不尽

jet7253 发表于 2012-4-21 19:27:51

本帖最后由 jet7253 于 2012-4-21 23:53 编辑

为了不变成无意义问题...就用一个例子..截取的DOS内文字 To Ini...顺便帮自己记录一下......
另外谢谢大家不吝啬教学
在这我学到太多了XD
#RequireAdmin
#include <Constants.au3>
$foo = Run("ipconfig.exe", @SystemDir, @SW_HIDE,$STDERR_CHILD + $STDOUT_CHILD)
ProcessWaitClose($foo)
$text=StdoutRead($foo)
Local $aini = @ScriptDir & "\Ini.ini"
If Not FileExists ($aini) Then
        FileWrite ($aini, "")
EndIf
Local $var1, $var2
$var1 = StringMid($Text & @CRLF, 111, 15)
$var2 = 'ip='
IniWriteSection($aini, 'Ip位置', $var2 & $var1)

user3000 发表于 2012-4-21 20:19:00

回复 9# jet7253
好心提醒楼主一句:
DOS回显不是这样读滴!
试试下面的:
#RequireAdmin
#include <Constants.au3>
$foo = Run("ipconfig.exe", @SystemDir, @SW_HIDE,$STDERR_CHILD + $STDOUT_CHILD)
Local $text = ''
While 1
$text &= StdoutRead($foo)
If @error Then ExitLoop
WEnd
MsgBox(0, '', $text)

xms77 发表于 2012-4-21 21:40:07

回复 10# user3000
3000兄,怎么你的那种代码方式反而不行啊?

而楼上的代码方式是可以的

user3000 发表于 2012-4-21 22:09:14

回复 11# xms77

原来楼主发在9楼的代码真也能读!
我读不出是我把其中的 ProcessWaitClose 那行去掉了!

但在我发在10楼的代码经测试无问题!
这是新手问答区学来的知识, 我已经这么用'N'久了!
没想原来也可以这么读! 是AU3改版后的事?

也上图证明(跟运行环境有关? 我这 XP SP3, AUTOIT 3.3.7.15 :

xms77 发表于 2012-4-21 22:39:10

回复 12# user3000
这个也不行了,奇怪了!我的系统是win7,你的那个代码我曾经在xp sp3试过,是可以的,可能是我的系统有问题。

jet7253 发表于 2012-4-21 22:55:48

回复user3000
这个也不行了,奇怪了!我的系统是win7,你的那个代码我曾经在xp sp3试过,是可以的,可能 ...
xms77 发表于 2012-4-21 22:39 http://www.autoitx.com/images/common/back.gif

我如果把IPCONFIG改成bcdedit.exe就不行了....囧

user3000 发表于 2012-4-21 23:16:44

回复 14# jet7253
我机器上没有文件,bcdedit.exe. 从网上下了一个, 用9楼10楼代码方式都可以读到啊!
页: [1] 2
查看完整版本: 截取的DOS出来的字串符 To Ini