标题: [其他] winrar自解压exe调用批处理不能复制文件 [打印本页]
作者: winsfly 时间: 2020-1-6 09:55 标题: winrar自解压exe调用批处理不能复制文件
本帖最后由 winsfly 于 2020-1-8 23:31 编辑
最近因为有一款破解软件是个绿色不要安装的文件夹, 个人想把它打包成exe, 运行完会自动清除解压目录,配置文件还有报告文件等,真正做到一键运行,不会产生垃圾.
想到用winrar自解压,动手做, 第一次直接调用一个批处理bit.cmd 代码如下:- for /f "tokens=1,2 delims=:" %%a in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal"') do (
- set docq=%%a
- set docp=%%b
- )
- set doc=%docq:~-1%:%docp%
- if not exist "%doc%\PassMark\BurnInTest" md "%doc%\PassMark\BurnInTest"
- copy LastUsed.bitcfg "%doc%\PassMark\BurnInTest\" /y>nul 2>nul
-
- start "" bit_cn.exe
- goto wait
-
- :wait
- qprocess|findstr /i bit_cn.exe >nul
- if %errorlevel%==0 (goto jiankong) else (goto wait)
-
-
- :jiankong
- qprocess|findstr /i bit_cn.exe >nul
- if %errorlevel%==0 (goto jiankong) else (goto shanchu)
-
- :shanchu
- if exist "C:\BurnInTest test files" rd /s /q "C:\BurnInTest test files"
- rd /s /q "%doc%\PassMark"
- cd ..&&rd /s /q %~dp0
- exit
复制代码
代码解说:自解压后先把预先做好的配置文件复制到我的文档下面(软件固定了配置目录不能修改),然后就运行主程序bit_cn.exe
紧跟着批处理用qprocess检测bit_cn.exe是否存在进程,这个主进程完成任务关闭后,批处理会自动删除自解压目录C:\burnintest, 配置文件"%doc%\PassMark\BurnInTest\LastUsed.bitcfg",报告文件"C:\BurnInTest test files".
下面详细说说碰到的问题:
一 32位系统按照上面做成的自解压exe完全没问题,但是64位系统上问题出在了start "" bit_cn.exe后面, 主程序运行后,批处理中断了;
二 后来用两个批处理解决了这个问题,把上面的批处理做成俩个,一个bit.cmd如下:- for /f "tokens=1,2 delims=:" %%a in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal"') do (
- set docq=%%a
- set docp=%%b
- )
- set doc=%docq:~-1%:%docp%
- if not exist "%doc%\PassMark\BurnInTest" md "%doc%\PassMark\BurnInTest"
- copy LastUsed.bitcfg "%doc%\PassMark\BurnInTest\" /y>nul 2>nul
-
- start cmd /k jiankong.cmd
- start "" bit_cn.exe
复制代码
另外一个jiankong.cmd就自动监控主程序的进程,一旦完成关闭自动清除文件.
三 又出来新问题: 64位系统会提示qprocess不是内部或外部命令, 复制进自解压exe可以解决,但是32位系统又不兼容,
最后想到在jiankong.cmd里面用copy命令判断64位系统就复制qprocess ,- if exist C:\Windows\SysWOW64 copy %windir%\system32\qprocess.exe C:\BurnInTest\ /y
复制代码
,
四 最终问题:直接运行jiankong.cmd, 可以复制qprocess, 一旦做成自解压exe运行后,会提示找不到文件.
字写了好多, 希望哪位大侠 赏光抽空看一眼, 帮忙解决以下最后一个自解压调用批处理不能复制文件的bug.
作者: winsfly 时间: 2020-1-6 12:51
本帖最后由 winsfly 于 2020-1-8 23:24 编辑
:Q:Q :Q 在线等了几天
作者: winsfly 时间: 2020-1-7 11:03
本帖最后由 winsfly 于 2020-1-8 23:25 编辑
继续等待中....
作者: winsfly 时间: 2020-1-8 22:44
本帖最后由 winsfly 于 2020-1-8 23:34 编辑
回复 3# winsfly
个人用的win7系统测试了n天了,
最后再整理一下思路,
1 win7 32位系统的自解压exe调用批处理不会出现莫名其妙的问题,,
2 win7 64位系统首先是自解压调用批处理会中断,其次系统默认命令不能运行比如qprocess,非要复制到当前目录,
3 win7 64位系统自解压调用批处理还有些系统默认命令有bug,如copy命令,提示找不到文件,单独批处理是可以成功的.
4 win10自解压会出现解压失败进程框,
5 肯定是哪里出问题了,我期待有哪位大神突然发心帮我测试我的情况/
作者: winsfly 时间: 2020-1-9 09:32
回复 4# winsfly
用tasklist替代qprocess 就不会出现问题了,奇怪的windows系统,也就用不着解决copy不了的问题了.
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |