无忧启动论坛

标题: 关于一个批处理代码问题· [打印本页]

作者: emokiss    时间: 2015-2-11 08:05
提示: 作者被禁止或删除 内容自动屏蔽
作者: 2011sllyjs    时间: 2015-2-11 10:41
本帖最后由 2011sllyjs 于 2015-2-11 10:43 编辑

@echo off
ver | find "5.0." > nul &&  goto 2000  
ver | find "5.1." > nul &&  goto xp  
ver | find "5.2." > nul &&  goto 2003  
ver | find "6.0." > nul &&  goto vista
ver | find "6.1." > nul &&  goto 7
ver | find "6.2." > nul &&  goto 8
ver | find "6.3." > nul &&  goto win8.1  
作者: 2011sllyjs    时间: 2015-2-11 10:42
全部写在一起就好啊,多个bat很容易出现调用的时候路径的问题

作者: emokiss    时间: 2015-2-11 12:29
提示: 作者被禁止或删除 内容自动屏蔽
作者: emokiss    时间: 2015-2-11 12:30
提示: 作者被禁止或删除 内容自动屏蔽
作者: wang_966    时间: 2015-2-11 14:24
本人推测没有在正确的资料夹执行,
例如: 当 "以系统管理员身份" 执行批次档, 此时可能跳到系统的资料夹去了.
请加
DIR
pause
一测便知.
作者: emokiss    时间: 2015-2-11 14:28
提示: 作者被禁止或删除 内容自动屏蔽
作者: captain_g    时间: 2015-2-11 15:15
emokiss 发表于 2015-2-11 14:28
测试以后发现~把跳转吗去掉·直接使用上面的代码·然后压缩成自解压模式·然后运行·就开花似猛弹窗口~! ...

这个可能是你用WINRAR制作自解压文件不当造成的,至于不当的原因未知。

下午闲着想打瞌睡,于是用7Z做自解压文件试验了一下,没问题啊!

用#1你的代码新建一个批处理,命名为3.CMD
创建一个简单的批处理命名为4.CMD,回显一句话用于确认是否调用成功;
再创建一个简单的批处理命名为R.CMD,退出时删除解压出的所有文件;
将这三个文件放在TEST文件夹中;
用7Z打包等到TEST.7Z;
将TEST.7Z制作成自解压文件TEST.EXE,解压目录为%TEMP%;

测试环境为WIN7,没问题!

作者: captain_g    时间: 2015-2-11 15:18
这个是测试文件。

Archive.7z

60.18 KB, 下载次数: 4, 下载积分: 无忧币 -2


作者: emokiss    时间: 2015-2-11 21:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: ku588    时间: 2015-2-11 21:40
本帖最后由 ku588 于 2015-2-12 18:58 编辑


-----------------------------------------------------
作者: emokiss    时间: 2015-2-11 21:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: captain_g    时间: 2015-2-12 08:35
emokiss 发表于 2015-2-11 21:24
兄弟啊·你不要运行一次给删除了·你把删除命令去掉~只把3一个文件压缩成自解压模式运行看看·
直接爆 ...

就用两个文件试一试,退出时不清理,没问题啊!

我的试用环境是32位的WIN7SP1。

Archive2.7z

60.12 KB, 下载次数: 2, 下载积分: 无忧币 -2


作者: emokiss    时间: 2015-2-12 18:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: ku588    时间: 2015-2-12 18:51
本帖最后由 ku588 于 2015-2-12 18:57 编辑

----------------------------------------------------
作者: captain_g    时间: 2015-2-13 08:38
emokiss 发表于 2015-2-12 18:15
老大·腻用一下我10楼打包的文件试一下行么·谢谢你了·不至于是电脑问题吧·

用你10楼的测试了,里面只有一个3.CMD,是用WINRRA打包的自解压文件,一切正常,没问题啊!

中午如有功夫,我再在64位W7中帮你试一试。
作者: 527104427    时间: 2015-2-13 09:32
关键是这句"%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

errorlevel  的值不一样,自解压的时候就一直重复运行3.cmd
作者: TanrwiMxJ    时间: 2015-2-13 10:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: captain_g    时间: 2015-2-13 11:49
emokiss 发表于 2015-2-12 18:15
老大·腻用一下我10楼打包的文件试一下行么·谢谢你了·不至于是电脑问题吧·

#17楼 527104427兄弟 所说的是有道理的!

在64位WIN7中使用出现的现象确实如你所说。

在32位WIN7中(双击及自解压)使用时,实际上执行的都是 :Administrator 分支,即 errorlevel 的值是0;

而在64位WIN7中双击使用时,实际上执行的也是 :Administrator 分支,即 errorlevel 的值是0;

但在64位WIN7中自解压使用时,实际上执行的却是:UAC分支,即 errorlevel 的值不是0,但最后一句你又使用了exit /b;

建议你:

再仔细斟酌 if 那句及前面一句;再看一下 exit /b 的用法;再研究一下调用 3.CMD 的那个批处理文件;

为什么?

双击与自解压的运行机制可能并不一样,还有:可能是因为在64位WIN7中至少有两处都有cmd.exe、cacls.exe文件,这这些文件的MD5并不一样。

这些是瞎猜的。

注:以上均在Administrator帐户下测试。
作者: emokiss    时间: 2015-2-13 18:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: emokiss    时间: 2015-2-13 18:25
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3