au3单语句执行cmd(dos)多条复杂命令cmd功能相当丰富,au3调用cmd很常见,如果多行的cmd命令,写个bat文件,再去调用太麻烦了。
通过研究,写了个相对复杂的cmd命令,直接用au3一行调用,希望对大家有所启发。
这是个隐藏文件夹的例子,用au3当然也可以实现,只是为了说明调用复杂cmd命令。
大家试试能不能打开隐藏文件夹,如果能打开的话请告知打开的方式。
调用CMD隐藏文件夹.au3
$mg = MsgBox(1, "调用CMD隐藏文件夹", "要先进行安装吗?")
If $mg = 1 Then RunWait(@ComSpec & ' /V:ON/c @echo off&setlocal enabledelayedexpansion&set /p m=请输入盘符:&set p=!m:~0,1!&if not exist !p!:\nul (cls&echo !p!盘不存在&pause&exit) else cacls !p!:\>nul&&echo 对不起,不支持NTFS格式分区&&pause&&exit&set b=~1&set a=aux.{645FF040-5081-101B-9F08-00AA002F954E}\&set i=!a:~3,1!&set k= &set s=!k!!k!!k!!k!&set t=md ^"!p!:\!i!!i!!i!\&set u=!t!!a:~0,3!!b!!a:~3,4!\& !t!" & !t!!a!" & !u! !s! !s! !s! !s! !s! !k!!k! \" & !u! !b!\!s!!s!!s!!s!!s! !k! !k!\"&rd ^&&rd md&cls&echo 安装结束&pause')
Run(@ComSpec & ' /V:ON/c @echo off&setlocal enabledelayedexpansion&set /p m=请输入盘符和密码:&set p=!m:~0,1!&set g=!m:~1,2!&set c=365193&set b=~1\&set y=!m:~3!&set /a h=(!g!+82)*!c!&set /a a=(!h:~3,2!*7 "&" 54)*2&set /a h=!h:~0,4!*!h:~-4!&set e=!h:~-1!&set t=!p!:\e!e!e!e!!b!aux~1.{!a!\ !b!!h:~-3,2!!h:~1,1!!h:~-2,1!!b!&set /a z=!y!*6983/6&set /a s=!z:~0,3!*!z:~-4!*87&set z=!s:~0,3!&set s=u!s:~-2!&set z=!t!!c!!c!!c!\!z! \&if not exist !p!:\nul (cls&echo !p!盘不存在&pause&exit) else if not exist !t!nul (cls&echo 管理密码错误或未安装&pause&exit) else cls&if exist !z!!s!\nul (move "!z!!s!" !p!:\!s!&start !p!:\!s!&exit) else if exist !p!:\!s!\nul (move !p!:\!s! "!z!!s!"||echo 无法隐藏!p!:\!s! 请退出其运行的文件&&pause&&exit&echo 已隐藏!p!:\!s!&pause&exit) else if exist !z!\nul (rd "!z!"&echo 已删除空用户&pause&exit) else set /p y2=重输密码后新建用户:&if !y! NEQ !y2! (echo 两次密码不一样&pause&exit) else md "!z!"&md !p!:\!s!&start !p!:\!s!')
使用说明:
执行安装就会出现一个cmd窗口,提示输入盘符,如果盘符错误会有出错提示。
注意不支持NTFS格式分区,因为U盘普遍是fat格式的,两种格式都写单行命令会太长。
另外本人建议,硬盘里至少要有一个分区是fat格式的,这样win98、dos都支持,兼容性好一些。
取消安装或安装结束兵,执行隐藏开关命令,提示输入盘符和密码,密码分两部分,前两位是管理密码,默认为15,余下的为用户密码,必须是数字,如:d15753、e15921345,其中753、921345就是用户密码。
如果是第一次输入密码,回车后会提示重输用户密码,输入753回车确认后,就会在D盘打开一个u92的文件夹,你就可以往这个文件夹里放东西了。如输入的是d15753,D盘还没安装,就会提示安装,那得先执行安装。
再次执行开关命令,盘符密码还是d15753,就会隐藏u92文件夹,如果u92里的文件在使用会提示无法隐藏,要求退出u92中运行的文件。
下次执行开关命令,同样的用户密码753,就会直接打开u92。如果把u92改名或删除,下次用753密码操作,就会删除这个密码的用户。
根据密码创建用户,753密码就创建u92用户,其中92是自动生成的号码,是不能更改的,这样便于多用户同时打开。更改密码就更改用户,步骤就是打开隐藏,改名,删除,新建。
注意:凡是隐藏的都是可以破解的,因为数据并没有任何变化,所以不能用来隐藏重要数据。对一些文件夹快速加密、隐藏软件千万不要相信。数据的安全在于改写,包括粉碎和加密数据从原理上讲应比拷贝文件还要慢。
上面这个隐藏文件夹例子有些极端,我只是为了说明单句能写复杂的命令,同时因为是隐藏,所以故意写成不易读,否则就谈不上保密了。单句命令也可以用“_”换行的,照样可以写得很有层次,再说一般au3也不会引用太复杂的cmd命令,否则还不如写成bat来调用au3。
关于单句命令的换行:
Run('cmd /c calc & notepad', "", @SW_HIDE)
——这是先打开“计算器”,然后打开“记事本”的例子
只要在单引号的内容中插入以下内容,就可以实现换行:
‘ & _
‘
可以这样:
Run('cmd /c calc &' & _
'notepad', "", @SW_HIDE)
也可以这样:
Run('cmd /c ' & _
'calc &' & _
'notepad', "", @SW_HIDE)
甚至可以这样:
Run('cmd' & _
' /c ' & _
'calc &' & _
'note' & _
'pad', "", @SW_HIDE)
记得有个“系统快速设置工具”的au3脚本,写得不错,很详细。但是重复启动关闭cmd次数太多了,类似如下的内容有近500条:
RunWait(@ComSpec & " /c sc config ALG start= DEMAND ", @SystemDir, @SW_HIDE)
RunWait(@ComSpec & " /c sc config AppMgmt start= DEMAND ", @SystemDir, @SW_HIDE)
RunWait(@ComSpec & " /c sc config AudioSrv start= AUTO ", @SystemDir, @SW_HIDE)
RunWait(@ComSpec & " /c sc config BITS start= DEMAND ", @SystemDir, @SW_HIDE)
RunWait(@ComSpec & " /c sc config Browser start= DEMAND ", @SystemDir, @SW_HIDE)
RunWait(@ComSpec & " /c sc config ClipSrv start= DISABLED ", @SystemDir, @SW_HIDE)
RunWait(@ComSpec & " /c sc config COMSysApp start= DEMAND ", @SystemDir, @SW_HIDE)
……
写成以下形式启动一次cmd就可以了:
RunWait(‘cmd /c sc config ALG start= DEMAND &’ & _
‘ sc config AppMgmt start= DEMAND &’ & _
‘ sc config AudioSrv start= AUTO &’ & _
‘ sc config BITS start= DEMAND’, “”, @SW_HIDE)
……
暂无评论内容