找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21170|回复: 3

[系统相关] [以解决] 如何通过外部程序调用BAT自身执行?

[复制链接]
发表于 2016-4-13 14:12:33 | 显示全部楼层 |阅读模式
本帖最后由 _FPXI19 于 2016-4-15 00:03 编辑

我想往系统里写入一个时间同步的任务,但是用户权限不够,只能调用第三方程序来提升权限
  1. xxx.exe "需要执行的代码"
复制代码
但是因为写入任务的过程代码我写的有点复杂导致没有办法可以简洁的把代码加入第三方程序的调用中
  1.         1.        ::获取时间变量
  2.         2.        set /a H=%time:~0,2%
  3.         3.        set /a M=%time:~3,2%
  4.         4.        set /a S=%time:~6,2%
  5.         5.       
  6.         6.        ::计算延迟时间
  7.         7.        if not %M% GEQ 53 (set /a M=M+7) else (set /a H=H+1&set /a M=%M%+7-60)
  8.         8.       
  9.         9.        ::修正延迟后的时间数值
  10.         10.        if %H% LSS 10 (set H=0%H%)
  11.         11.        if %M% LSS 10 (set M=0%M%)
  12.         12.        if %H% EQU 24 (set H=00)
  13.         13.       
  14.         14.        ::获取当前任务ID号
  15.         15.        at %H%:%M% "Ver"&for /f "skip=2" %%i in ('at') do (set /a ID=%%i+1&at %%i /delete)
  16.         16.       
  17.         17.        ::写入同步任务并自我删除
  18.         18.        at %H%:%M% "net time /set /yes&at %ID% /delete"

  19.         1.        ::获取当前任务ID号并比较大小
  20.         2.        set /a ID=0
  21.         3.        setlocal enabledelayedexpansion
  22.         4.        at %H%:%M% "Ver"&for /f "skip=2" %%i in ('at') do (
  23.         5.          if %%i GTR !ID! (set /a ID=%%i)
  24.         6.          )
  25.         7.        echo %ID%
  26.         8.        pause
复制代码
剩下的思路就是把代码写入一个新的bat,然后用提升程序xxx.exe "xx.bat"来执行,但是这样就违反了简洁的初衷,我在论坛找了相关资料,看见可以通过自我调用来让自我最小化执行
  1. %1(start /min cmd.exe /c %0 :&exit)
复制代码
找了挺久还是暂时理解不了%1和%0的意思,我的问题是有没有通过上面类似的原理从bat执行的一开始就通过xxx.exe自我调用提升权限来保证下面的时间同步代码能顺利执行?

评分

参与人数 1PB -4 收起 理由
pcl_test -4 未按版规发帖

查看全部评分

发表于 2016-4-13 14:16:59 | 显示全部楼层
完全无法理解你们的思路,任务计划以管理员的身份执行即可。
用schtasks指定用户就可以。
 楼主| 发表于 2016-4-14 12:45:25 | 显示全部楼层
回复 2# codegay


    现在的问题是没有管理员权限。
发表于 2016-4-15 02:19:06 | 显示全部楼层
  1. %1 @xxx.exe cmd.exe /c "%~0" : & exit

  2. @echo off
  3. ::以下为你要执行的代码
复制代码

评分

参与人数 1技术 +1 收起 理由
_FPXI19 + 1 虽然之前已解决,但是还是表示感谢。

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 21:27 , Processed in 0.011279 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表