[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] winrar自解压exe调用批处理不能复制文件

本帖最后由 winsfly 于 2020-1-8 23:31 编辑

最近因为有一款破解软件是个绿色不要安装的文件夹,  个人想把它打包成exe,  运行完会自动清除解压目录,配置文件还有报告文件等,真正做到一键运行,不会产生垃圾.

想到用winrar自解压,动手做, 第一次直接调用一个批处理bit.cmd   代码如下:
  1. for /f "tokens=1,2 delims=:"  %%a in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal"') do (
  2. set docq=%%a
  3. set docp=%%b
  4. )
  5. set doc=%docq:~-1%:%docp%
  6. if not exist "%doc%\PassMark\BurnInTest" md "%doc%\PassMark\BurnInTest"
  7. copy LastUsed.bitcfg "%doc%\PassMark\BurnInTest\" /y>nul 2>nul
  8. start "" bit_cn.exe
  9. goto wait
  10. :wait
  11. qprocess|findstr /i bit_cn.exe >nul
  12. if %errorlevel%==0 (goto jiankong) else (goto wait)
  13. :jiankong
  14. qprocess|findstr /i bit_cn.exe >nul
  15. if %errorlevel%==0 (goto jiankong) else (goto shanchu)
  16. :shanchu
  17. if exist "C:\BurnInTest test files" rd /s /q "C:\BurnInTest test files"
  18. rd /s /q "%doc%\PassMark"
  19. cd ..&&rd /s /q %~dp0
  20. 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如下:
  1. for /f "tokens=1,2 delims=:"  %%a in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal"') do (
  2. set docq=%%a
  3. set docp=%%b
  4. )
  5. set doc=%docq:~-1%:%docp%
  6. if not exist "%doc%\PassMark\BurnInTest" md "%doc%\PassMark\BurnInTest"
  7. copy LastUsed.bitcfg "%doc%\PassMark\BurnInTest\" /y>nul 2>nul
  8. start cmd /k jiankong.cmd
  9. start "" bit_cn.exe
复制代码
另外一个jiankong.cmd就自动监控主程序的进程,一旦完成关闭自动清除文件.
                          
三   又出来新问题: 64位系统会提示qprocess不是内部或外部命令,  复制进自解压exe可以解决,但是32位系统又不兼容,
最后想到在jiankong.cmd里面用copy命令判断64位系统就复制qprocess ,
  1. if exist C:\Windows\SysWOW64 copy %windir%\system32\qprocess.exe C:\BurnInTest\ /y
复制代码
,  

四 最终问题:直接运行jiankong.cmd,  可以复制qprocess,  一旦做成自解压exe运行后,会提示找不到文件.

字写了好多,  希望哪位大侠  赏光抽空看一眼,  帮忙解决以下最后一个自解压调用批处理不能复制文件的bug.

本帖最后由 winsfly 于 2020-1-8 23:24 编辑

:Q:Q :Q 在线等了几天

TOP

本帖最后由 winsfly 于 2020-1-8 23:25 编辑

继续等待中....

TOP

本帖最后由 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            肯定是哪里出问题了,我期待有哪位大神突然发心帮我测试我的情况/

TOP

回复 4# winsfly


    用tasklist替代qprocess 就不会出现问题了,奇怪的windows系统,也就用不着解决copy不了的问题了.

TOP

返回列表