找回密码
 加入
搜索
查看: 9367|回复: 14

[AU3基础] 一批处理转AU3代码

 火.. [复制链接]
发表于 2012-12-1 22:36:11 | 显示全部楼层 |阅读模式
本帖最后由 case 于 2012-12-1 23:17 编辑

小弟AU3学得不好,有好多思路都没有,也不知道用什么函数可以达到想要的目的

这是批处理代码.作用是一键GHOST安装系统  我想用AU3来实现.
@echo off
set v=0
set w=0
set x=0
set y=0
set z=0
set g=0
for /f "eol=D tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 delims=[]\ " %%a in ('y:\op\GHOST\omnifs32.exe info') do (
if %%i==CASE_Z set g=%%d
if %%a%%i==1.1:CASE_Z set y=1
if %%a%%i==2.1:CASE_Z set x=1
if %%a==2.1: set v=1
if %%a==1.1: set v=1
if %%a==3.1: set z=1
if %%a==1.2: set w=1
if %%a==2.2: set w=1
)


if %v%==0 call :nohd
if %z%==1 call :fail
if %w%==0 call :fenqu
if %x%==1 call :more
if %y%==1 call :less

goto error
pause>>nul

:fail
pecmd MESS 存在2个或更多硬盘,为确保数据安全,请手动运行Ghost. @出错啦!#OK *10000
goto end

:less
y:\op\GHOST\GHOST32_1151.exe -noide -clone,mode=pload,dst=2:1,src=%g%\system\CASE3.GHO:1 -batch -sure -rb
goto end

:more
y:\op\GHOST\GHOST32_1151.exe -noide -clone,mode=pload,dst=1:1,src=%g%\system\CASE3.GHO:1 -batch -sure -rb
goto end

:fenqu
pecmd MESS 请检查硬盘是否已经分区或存在问题. @出错啦!#OK *10000
goto end

:nohd
pecmd MESS 没有找到硬盘. @出错啦!#OK *10000
goto end

:error
pecmd MESS 请尝试修改U盘盘符为CASE_Z和重新写U盘引导. @未知错误!#OK *15000
goto end

:end
exit
例子 omnifs32.exe info读取硬盘信息如下:
Disk: 1 (298.09GB) M:[WDC WD32 00AAJS-00L7A 01.0]
    1.1: (     20GB) [C:\] Active Volume NTFS l:[WIN7]
    1.2: ( 120.01GB) [D:\] Volume NTFS l:[TOOLS]
    1.3: (     60GB) [E:\] Volume NTFS l:[DATA]
    1.4: (     90GB) [F:\] Volume NTFS l:[BACKUP]
         (  31.50KB) Unused Space
    1.5: (   8.07GB) [H:\] Diag Hidden Volume FAT32 l:[IBM_SERVICE]
         (   1.46MB) Unused Space
Disk: 2 (14.20GB) M:[USB DISK CD PMAP]
    2.1: (  14.20GB) [K:\] Active Volume FAT32 l:[CASE_Z] Removable Drive
因为有时候U盘可能是Disk: 1  ,之前是靠CASE_Z来判断U盘是HD0,还是HD1.
我也搜索了关于GHOST的一些帖子,也看到了P大的SetupApi.au3,_CM_Get_Drive_Disk_Number,可是不知道怎么才能用才能得到U盘是HD0还是HD1
FileReadLine
DriveGetDrive
这些好像都不能得到U盘是HD0还是HD1
其实我想 或者用正则得到  读取      
2.1: (  14.20GB) [K:\] Active Volume FAT32 l:[CASE_Z] Removable Drive

哪位大大给个思路...
发表于 2012-12-1 23:14:11 | 显示全部楼层
Local $Str = FileRead('info.txt')
Local $aInfo = StringRegExp($str, '(?mi)^\h+(\d+\.1):.+?\[(\w):\\.+?Removable Drive(?=\v|$)', 3)
If Not @Error Then MsgBox(64, 'U盘信息', '磁盘: ' & $aInfo[0] & @CRLF & '盘符: ' & $aInfo[1])
 楼主| 发表于 2012-12-1 23:25:06 | 显示全部楼层
回复 2# afan


    A版好快,我试了一下,这代码没能正常运行.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-12-1 23:31:13 | 显示全部楼层
回复 3# case


    贴出来的info可能已经与实际有差,改一下试试
Local $aInfo = StringRegExp($str, '(?mi)^\h+(\d+\.1):.+?\[(\w):\\.+?Removable Drive\h*(?=\v|$)', 3)

评分

参与人数 2金钱 +40 收起 理由
lpxx + 30 仔细揣摩一下
风行者 + 10 学习到新东西

查看全部评分

 楼主| 发表于 2012-12-1 23:38:33 | 显示全部楼层
回复 4# afan


    谢谢A版, 这行代码可行的,我还要好好的学习一下正则啊.每次遇到这样的问题自己都无法解决.你真的帮我的很多次了,再次谢谢.
发表于 2012-12-1 23:47:10 | 显示全部楼层
回复  afan


    谢谢A版, 这行代码可行的,我还要好好的学习一下正则啊.每次遇到这样的问题自己都无法 ...
case 发表于 2012-12-1 23:38



    不用客气~ P版的也可以试试
#include <SetupAPI.au3>

Local $aDriveU = DriveGetDrive('Removable')
If @error Then Exit MsgBox(0, '', '无U盘')
For $i = 1 To $aDriveU[0]
        If $aDriveU[$i] <> 'a:' Then
                $Num = _CM_Get_Drive_Disk_Number($aDriveU[$i])
                MsgBox(0, $aDriveU[$i] & ' 物理盘号', '系统(0基):' & $Num & @LF & _
                                'GHOST(1基):' & $Num + 1)
        EndIf
Next
发表于 2012-12-2 07:19:49 | 显示全部楼层
学习了学习了
发表于 2012-12-2 10:24:21 | 显示全部楼层
回复  case


    贴出来的info可能已经与实际有差,改一下试试
afan 发表于 2012-12-1 23:31


暂时没看懂,等我仔细揣摩一下。
 楼主| 发表于 2012-12-2 12:04:02 | 显示全部楼层
回复 8# lpxx


    谢谢关注,我也在研究研究,不懂的地方还请多多帮忙才是
 楼主| 发表于 2012-12-2 12:50:41 | 显示全部楼层
回复 6# afan


    A版,怎么我运行你这段代码出错,我也在autoit3\Include下放了SetupApi.au3和LocalSecurityAuthority.au3,甚至还放了SetupUI.au3,还有下载了P版的lsasecur.au3也放在Include下,运行都要出错,也尝试把lsasecur.au3改名LocalSecurityAuthority.au3运行,也要报错。
会不会是版本问题或是我还要差些文件?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-12-2 13:02:51 | 显示全部楼层
回复 10# case


    你的第一个报错提示怎么是 SetupApi.au3 的第二行? 这行不可能是“Return SetError...”
发表于 2012-12-2 13:08:50 | 显示全部楼层
暂时没看懂
发表于 2012-12-2 21:10:35 | 显示全部楼层
回复 4# afan
A版的表达式考虑的太全面了,有些要好好研究,如果我来写的话是这样的
(?m)(\d\.1):.*\[(\w:)\\\].*Removable Drive
发表于 2012-12-6 15:37:38 | 显示全部楼层
进来学习一下
发表于 2012-12-8 09:24:12 | 显示全部楼层
进来学习一下  $$
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-27 06:42 , Processed in 0.086424 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表