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

[日期时间] 为什么NT AUTHORITY\SYSTEM权限下的任务计划不能正常运行?

本帖最后由 sinun 于 2014-10-11 23:41 编辑
  1. @echo off
  2. schtasks /create /tn DelData /tr "C:\DelData.bat" /sc daily /st 18:00:00 /ru system
  3. set SrcDir=C:\Data
  4. set DaysAgo=10
  5. for /f "delims=" %%a in ('reg query "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate') do (
  6.     set "RegDateOld=%%a"
  7. )
  8. set RegDateOld=%RegDateOld:~-8%
  9. reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d yyyy-M-d /f>nul
  10. >"%temp%\DstDate.vbs" echo LastDate=date()-%DaysAgo%
  11. >>"%temp%\DstDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
  12. >>"%temp%\DstDate.vbs" echo wscript.echo FmtDate
  13. for /f %%a in ('cscript /nologo "%temp%\DstDate.vbs"') do (
  14.     set "DstDate=%%a"
  15. )
  16. set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
  17. for /r "%SrcDir%" %%a in (*.*) do (
  18.     if "%%~ta" leq "%DstDate%" (
  19.         if exist "%%a" (
  20.             del /f /q "%%a"
  21.         )
  22.     )
  23. )
复制代码
请教各位老师,上面代码的目标是每天18:00自动删除C:\Data里10天之前的文件,10天之内的保留。
将代码保存文件名称为DelData.bat,并放在C:\

(1) 运行DelData.bat,会删除C:\Data里10天之前的文件。同时会新建一个以NT AUTHORITY\SYSTEM为权限的任务计划DelData。这些都是正常的。
(2) 但运行任务计划DelData时,C:\Data里所有文件都被删除了,包括10天之内的文件。特别是第一次运行该任务计划时文件都被删除了,其后多次运行又正常了,不知何因。

请老师指点,为什么运行DelData.bat正常,运行任务计划就不正常了?
还要再请教NT AUTHORITY\SYSTEM为权限的任务计划都有哪些限制,比如net use会异常,等。谢谢!!!

回复 13# Batcher

请大神帮帮忙,看下面这个问题该怎么解决,多谢!!!

请教批处理命令findstr的异常问题
http://bbs.bathome.net/thread-33296-1-1.html

TOP

回复 23# apang

是啊,对reg add也有限制,不知道system权限的计划任务到底有多少限制呢。

TOP

以前碰到过schtasks创建的计划任务(system账户权限),用 xcopy 复制远程机器上的文件到本地失败,但改成具有管理员权限的账户可以复制,不知道为什么。

TOP

回复 21# Batcher


运行任务计划,%temp%下没有生成DstDate.vbs,而是生成在C:\WINDOWS\temp目录下。

请老师帮忙解答一下,NT AUTHORITY\SYSTEM权限下的任务计划都是有哪些特殊的属性? 谢谢!!!

TOP

回复 19# sinun


打开命令行窗口
cd /d "%temp%"
dir /b /a *.vbs
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

HKEY_USERS\S-1-5-18对应的是system账户的SID,试试修改 HKEY_USERS\S-1-5-18\Control Panel\International ...
apang 发表于 2014-10-21 13:00


修改了注册表后,运行C:\DelData.bat,可生成DstDate.vbs,

运行任务计划DelData,不会生成DstDate.vbs,但也可以正常删除文件,请教老师这是为什么?

TOP

回复  sinun


你手工修改注册表,把日期格式设置成 yyyy-M-d
把任务计划里面的脚本改成这样:
Batcher 发表于 2014-10-21 11:27


按老师的要求手工修改了注册表,运行C:\DelData.bat,自动生成DstDate.vbs,可正常删除10天之前的文件
DelData.log内容如下:
  1. "2010-11-20 09:06" leq "2014-10-15"
  2. "2014-10-21 10:21" leq "2014-10-15"
  3. "2014-10-25 10:23" leq "2014-10-15"
  4. "2014-10-25 10:04" leq "2014-10-15"
复制代码
运行任务计划DelData,不会生成DstDate.vbs,但也可删除10天之前的文件,10天之内的保留。DelData.log内容与上面相同。不生成DstDate.vbs,怎么计算的日期呢?

TOP

HKEY_USERS\S-1-5-18对应的是system账户的SID,试试修改 HKEY_USERS\S-1-5-18\Control Panel\International的sShortDate值看行不行。
1

评分人数

    • sinun: 感谢老师的回复!技术 + 1

TOP

回复 16# sinun


你手工修改注册表,把日期格式设置成 yyyy-M-d
把任务计划里面的脚本改成这样:
  1. @echo off
  2. schtasks /create /tn DelData /tr "C:\DelData.bat" /sc daily /st 18:00:00 /ru system
  3. set SrcDir=C:\Data
  4. set DaysAgo=10
  5. >"%temp%\DstDate.vbs" echo LastDate=date()-%DaysAgo%
  6. >>"%temp%\DstDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
  7. >>"%temp%\DstDate.vbs" echo wscript.echo FmtDate
  8. for /f %%a in ('cscript /nologo "%temp%\DstDate.vbs"') do (
  9.     set "DstDate=%%a"
  10. )
  11. set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
  12. for /r "%SrcDir%" %%a in (*.*) do (
  13.     echo "%%~ta" leq "%DstDate%">>C:\DelData.log
  14.     if "%%~ta" leq "%DstDate%" (
  15.         if exist "%%a" (
  16.             del /f /q "%%a"
  17.         )
  18.     )
  19. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复  sinun


看起来像是修改注册表失败,或者是修改注册表成功了但是没有生效。你把 reg add 那行改成 ...
Batcher 发表于 2014-10-14 14:09


下面是问题重现,请帮忙看看问题在哪里,谢谢!

(1) 日期格式为M/d/yyyy,直接运行C:\DelData.bat,运行正常,DelData.log内容如下。(10/07/2014文件被删除,其它保留)
  1. 修改注册表之前
  2. ! REG.EXE VERSION 3.0
  3. HKEY_CURRENT_USER\Control Panel\International
  4.     sShortDate REG_SZ yyyy-M-d
  5. The operation completed successfully
  6. 修改注册表之后
  7. ! REG.EXE VERSION 3.0
  8. HKEY_CURRENT_USER\Control Panel\International
  9.     sShortDate REG_SZ yyyy-M-d
  10. "2014-10-16 08:05 PM" leq "2014-10-08"
  11. "2014-10-17 09:39 PM" leq "2014-10-08"
  12. "2014-10-18 06:26 AM" leq "2014-10-08"
  13. "2014-10-07 12:15 PM" leq "2014-10-08"
  14. "2014-10-09 09:31 PM" leq "2014-10-08"
  15. "2014-10-10 11:39 PM" leq "2014-10-08"
  16. "2014-10-11 11:33 PM" leq "2014-10-08"
  17. "2014-10-12 07:16 PM" leq "2014-10-08"
  18. "2014-10-13 10:17 PM" leq "2014-10-08"
  19. "2014-10-14 11:46 PM" leq "2014-10-08"
  20. "2014-10-16 10:07 PM" leq "2014-10-08"
  21. "2014-10-17 10:38 PM" leq "2014-10-08"
  22. "2014-10-18 05:43 AM" leq "2014-10-08"
  23. "2014-10-16 11:59 PM" leq "2014-10-08"
  24. "2014-10-17 11:59 PM" leq "2014-10-08"
  25. "2014-10-18 06:19 AM" leq "2014-10-08"
复制代码
(2) 日期格式更改为M/d/yyyy,第一次运行任务计划DelData,运行异常,DelData.log内容如下。(所有文件被删除)
  1. 修改注册表之前
  2. ! REG.EXE VERSION 3.0
  3. HKEY_CURRENT_USER\Control Panel\International
  4.     sShortDate REG_SZ M/d/yyyy
  5. The operation completed successfully
  6. 修改注册表之后
  7. ! REG.EXE VERSION 3.0
  8. HKEY_CURRENT_USER\Control Panel\International
  9.     sShortDate REG_SZ yyyy-M-d
  10. "10/16/2014 08:05 PM" leq "2014-10-08"
  11. "10/17/2014 09:39 PM" leq "2014-10-08"
  12. "10/18/2014 06:26 AM" leq "2014-10-08"
  13. "10/07/2014 12:15 PM" leq "2014-10-08"
  14. "10/09/2014 09:31 PM" leq "2014-10-08"
  15. "10/10/2014 11:39 PM" leq "2014-10-08"
  16. "10/11/2014 11:33 PM" leq "2014-10-08"
  17. "10/12/2014 07:16 PM" leq "2014-10-08"
  18. "10/13/2014 10:17 PM" leq "2014-10-08"
  19. "10/14/2014 11:46 PM" leq "2014-10-08"
  20. "10/16/2014 10:07 PM" leq "2014-10-08"
  21. "10/17/2014 10:38 PM" leq "2014-10-08"
  22. "10/18/2014 05:43 AM" leq "2014-10-08"
  23. "10/16/2014 11:59 PM" leq "2014-10-08"
  24. "10/17/2014 11:59 PM" leq "2014-10-08"
  25. "10/18/2014 06:19 AM" leq "2014-10-08"
复制代码
(3) 日期格式更改为M/d/yyyy,但第二次运行任务计划DelData,运行正常,DelData.log内容同(1)
日期格式已更改为M/d/yyyy了,但任务计划返回的值仍是yyyy-M-d

TOP

还不如到win7的机子拷贝一个forfiles.exe命令到xp的系统,方便又实在。
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

Win7系统还是Win8系统?
UAC关闭了吗?

这里有个类似的问题已经解决了,可以参考一下:
Batcher 发表于 2014-10-15 16:44


多谢各位老师的支持!

我这些大多是XP的系统,没有UAC帐户控制。我正尝试你在10楼提出的问题重现,暂时还没有找到重现的例子。因为一般都是第一次任务计划运行异常,之后居然都正常了。

TOP

Win7系统还是Win8系统?
UAC关闭了吗?

这里有个类似的问题已经解决了,可以参考一下:
http://bbs.bathome.net/thread-32481-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 11# sinun


    按照10楼的方法操作先

TOP

返回列表