
winrar自解壓exe調用批處理不能復制文件最后由 winsfly 于 -1-8 23:31最近因為有一款破解軟件是個綠色不要安裝的文件夾,個人想把它打包成exe,運行完會自動清除解壓目錄,配置文件還有報告文件等,真正做到一鍵運行,不會產生垃圾.想到用winrar自解壓,動手做, 第一次直接調用一個批處理bit.cmd 代碼如下:
代碼解說:自解壓后先把預先做好的配置文件復制到我的文檔下面(軟件固定了配置目錄不能修改),然后就運行主程序bit_cn.exe 緊跟著批處理用qprocess檢測bit_cn.exe是否存在進程,這個主進程完成任務關閉后,批處理會自動刪除自解壓目錄C:burnintest, 配置文件%doc%PassMarkBurnInTestLastUsed.bitcfg,報告文件C:BurnInTest test files.下面詳細說說碰到的問題: 一 32位系統按照上面做成的自解壓exe完全沒問題,但是64位系統上問題出在了start bit_cn.exe后面, 主程序運行后,批處理中斷了; 二 后來用兩個批處理解決了這個問題,把上面的批處理做成倆個,一個bit.cmd如下:nclick="copycode($('code0'));">復制代碼
- for /f tokens=1,2 delims=:%%a in ('reg query HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders /v Personal') do (
- set docq=%%a
- set docp=%%b
- )
- set doc=%docq:~-1%:%docp%
- if not exist %doc%PassMarkBurnInTest md %doc%PassMarkBurnInTest
- copy LastUsed.bitcfg %doc%PassMarkBurnInTest /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
另外一個jiankong.cmd就自動監控主程序的進程,一旦完成關閉自動清除文件. 三 又出來新問題: 64位系統會提示qprocess不是內部或外部命令,復制進自解壓exe可以解決,但是32位系統又不兼容,最后想到在jiankong.cmd里面用copy命令判斷64位系統就復制qprocess ,nclick="copycode($('code1'));">復制代碼
- for /f tokens=1,2 delims=:%%a in ('reg query HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders /v Personal') do (
- set docq=%%a
- set docp=%%b
- )
- set doc=%docq:~-1%:%docp%
- if not exist %doc%PassMarkBurnInTest md %doc%PassMarkBurnInTest
- copy LastUsed.bitcfg %doc%PassMarkBurnInTest /y>nul 2>nul
- start cmd /k jiankong.cmd
- start bit_cn.exe
, 四 最終問題:直接運行jiankong.cmd,可以復制qprocess,一旦做成自解壓exe運行后,會提示找不到文件.字寫了好多,希望哪位大俠賞光抽空看一眼,幫忙解決以下最后一個自解壓調用批處理不能復制文件的bug.nclick="copycode($('code2'));">復制代碼
- if exist C:WindowsSysWOW64 copy %windir%system32qprocess.exe C:BurnInTest /y

