
[以解決]如何通過外部程序調用BAT自身執行最后由 _FPXI19 于 -4-15 00:03我想往系統里寫入一個時間同步的任務,但是用戶權限不夠,只能調用第三方程序來提升權限
但是因為寫入任務的過程代碼我寫的有點復雜導致沒有辦法可以簡潔的把代碼加入第三方程序的調用中nclick="copycode($('code0'));">復制代碼
- xxx.exe 需要執行的代碼
剩下的思路就是把代碼寫入一個新的bat,然后用提升程序xxx.exe xx.bat來執行,但是這樣就違反了簡潔的初衷,我在論壇找了相關資料,看見可以通過自我調用來讓自我最小化執行nclick="copycode($('code1'));">復制代碼
- 1.::獲取時間變量
- 2.set /a H=%time:~0,2%
- 3.set /a M=%time:~3,2%
- 4.set /a S=%time:~6,2%
- 5.
- 6.::計算延遲時間
- 7.if not %M% GEQ 53 (set /a M=M+7) else (set /a H=H+1&set /a M=%M%+7-60)
- 8.
- 9.::修正延遲后的時間數值
- 10.if %H% LSS 10 (set H=0%H%)
- 11.if %M% LSS 10 (set M=0%M%)
- 12.if %H% EQU 24 (set H=00)
- 13.
- 14.::獲取當前任務ID號
- 15.at %H%:%M% Ver&for /f skip=2 %%i in ('at') do (set /a ID=%%i+1&at %%i /delete)
- 16.
- 17.::寫入同步任務并自我刪除
- 18.at %H%:%M% net time /set /yes&at %ID% /delete
- 1.::獲取當前任務ID號并比較大小
- 2.set /a ID=0
- 3.setlocal enabledelayedexpansion
- 4.at %H%:%M% Ver&for /f skip=2 %%i in ('at') do (
- 5. if %%i GTR !ID! (set /a ID=%%i)
- 6. )
- 7.echo %ID%
- 8.pause
找了挺久還是暫時理解不了%1和%0的意思,我的問題是有沒有通過上面類似的原理從bat執行的一開始就通過xxx.exe自我調用提升權限來保證下面的時間同步代碼能順利執行?nclick="copycode($('code2'));">復制代碼
- %1(start /min cmd.exe /c %0 :&exit)

