标题: [日期时间] 为什么NT AUTHORITY\SYSTEM权限下的任务计划不能正常运行? [打印本页]
作者: sinun 时间: 2014-10-10 21:39 标题: 为什么NT AUTHORITY\SYSTEM权限下的任务计划不能正常运行?
本帖最后由 sinun 于 2014-10-11 23:41 编辑
- @echo off
- schtasks /create /tn DelData /tr "C:\DelData.bat" /sc daily /st 18:00:00 /ru system
-
- set SrcDir=C:\Data
- set DaysAgo=10
- for /f "delims=" %%a in ('reg query "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate') do (
- set "RegDateOld=%%a"
- )
- set RegDateOld=%RegDateOld:~-8%
- reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d yyyy-M-d /f>nul
- >"%temp%\DstDate.vbs" echo LastDate=date()-%DaysAgo%
- >>"%temp%\DstDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
- >>"%temp%\DstDate.vbs" echo wscript.echo FmtDate
- for /f %%a in ('cscript /nologo "%temp%\DstDate.vbs"') do (
- set "DstDate=%%a"
- )
- set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
- for /r "%SrcDir%" %%a in (*.*) do (
- if "%%~ta" leq "%DstDate%" (
- if exist "%%a" (
- del /f /q "%%a"
- )
- )
- )
复制代码
请教各位老师,上面代码的目标是每天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会异常,等。谢谢!!!
作者: apang 时间: 2014-10-10 22:33
本帖最后由 apang 于 2014-10-10 22:35 编辑
可能是 reg add 需要管理员权限
为什么不建立管理员权限的计划任务呢?
作者: sinun 时间: 2014-10-10 22:43
本帖最后由 sinun 于 2014-10-10 22:49 编辑
回复 2# apang
因为有许多电脑,用户名和密码都不一样,用管理员权限任务计划不容易实现。
请指教:
用NT AUTHORITY\SYSTEM权限的任务计划如何才能实现删除10天之前的文件呢?谢谢!
作者: Batcher 时间: 2014-10-12 06:15
任务计划只有第一次执行会出错,以后再次执行没有问题,是这样吗?
在代码的第19行上面加一行:- echo "%%~ta" leq "%DstDate%">>C:\DelData.log
复制代码
让脚本在任务计划里面第一次执行重现问题,把 C:\DelData.log 的内容发出来看看。
作者: sinun 时间: 2014-10-13 23:04
本帖最后由 sinun 于 2014-10-13 23:19 编辑
回复 4# Batcher
多谢!
这几台电脑,现在任务计划能正常运行,DelData.log如下:- "2014-09-22 13:45" leq "2014-10-03"
- "2014-10-13 22:40" leq "2014-10-03"
复制代码
我再找找其它任务计划不正常的电脑,再把其DelData.log发给你。
现在虽然能正常删除10天之前的文件,但如果把%temp%下的DstDate.vbs删除后,任务计划不会生成新的DstDate.vbs文件,日期的格式也没有改变。
有个很大的疑惑是:NT AUTHORITY\SYSTEM权限下的任务计划,哪些命令会受到限制或运行不正常?比如reg add,都有哪些命令呢,谢谢!
作者: DAIC 时间: 2014-10-14 09:04
回复 5# sinun
把所有的 "%temp%\DstDate.vbs" 改成 "C:\DstDate.vbs" 试试
作者: sinun 时间: 2014-10-14 12:19
回复 6# DAIC
已试过改到C:\DstDate.vbs,情况依旧。
作者: DAIC 时间: 2014-10-14 12:24
回复 7# sinun
情况依旧是指那个vbs删掉之后无法自动生成是吗?只有一台电脑有这个问题还是所有电脑都有这个问题?
作者: sinun 时间: 2014-10-14 12:44
回复 4# Batcher
今天找到一台电脑的任务计划不能正常运行,具体情况如下:
1. 在C:\DATA 新建一个今天(2014.10.14)的文件A,并复制一个10天之前(2014.09.16)的文件B。
2. 运行C:\DelData.bat 后,文件A保留,文件B被删除。DelData.log的内容为(见下)前两行。(正常)
3. 再复制一个文件B放在C:\DATA,运行任务计划DelData,结果文件A和B都被删除。DelData.log的内容为(见下)第三、四行。(异常)
4. 再新建文件A 并复制文件B 到C:\DATA,再运行任务计划DelData,文件A保留,文件B被删除。运行两次都是正常。DelData.log的内容为(见下)最后四行。(正常)- "2014-09-16 15:46" leq "2014-10-04"
- "2014-10-14 07:10" leq "2014-10-04"
- "09/16/2014 15:46" leq "2014-10-04"
- "10/14/2014 07:10" leq "2014-10-04"
- "2014-09-16 15:46" leq "2014-10-04"
- "2014-10-14 07:13" leq "2014-10-04"
- "2014-09-16 15:46" leq "2014-10-04"
- "2014-10-14 07:13" leq "2014-10-04"
复制代码
请教该如何解决任务计划异常的问题,谢谢!
作者: Batcher 时间: 2014-10-14 14:09
回复 9# sinun
看起来像是修改注册表失败,或者是修改注册表成功了但是没有生效。你把 reg add 那行改成这样:- echo 修改注册表之前>>C:\DelData.log
- reg query "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate >>C:\DelData.log 2>&1
- reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d yyyy-M-d /f >>C:\DelData.log 2>&1
- echo 修改注册表之后>>C:\DelData.log
- reg query "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate >>C:\DelData.log 2>&1
复制代码
再次重现问题,把C:\DelData.log的内容发出来看看。
作者: sinun 时间: 2014-10-15 05:49
回复 sinun
情况依旧是指那个vbs删掉之后无法自动生成是吗?只有一台电脑有这个问题还是所有电脑 ...
DAIC 发表于 2014-10-14 12:24
手动删除掉VBS,正常运行上面文件会生成VBS,但SYSTEM权限的任务计划就不会生成,SYSTEM权限的任务计划对那些命令有限制呢?
作者: DAIC 时间: 2014-10-15 08:51
回复 11# sinun
按照10楼的方法操作先
作者: Batcher 时间: 2014-10-15 16:44
Win7系统还是Win8系统?
UAC关闭了吗?
这里有个类似的问题已经解决了,可以参考一下:
http://bbs.bathome.net/thread-32481-1-1.html
作者: sinun 时间: 2014-10-16 11:03
Win7系统还是Win8系统?
UAC关闭了吗?
这里有个类似的问题已经解决了,可以参考一下:
Batcher 发表于 2014-10-15 16:44
多谢各位老师的支持!
我这些大多是XP的系统,没有UAC帐户控制。我正尝试你在10楼提出的问题重现,暂时还没有找到重现的例子。因为一般都是第一次任务计划运行异常,之后居然都正常了。
作者: xxpinqz 时间: 2014-10-16 14:55
还不如到win7的机子拷贝一个forfiles.exe命令到xp的系统,方便又实在。
作者: sinun 时间: 2014-10-21 11:13
回复 sinun
看起来像是修改注册表失败,或者是修改注册表成功了但是没有生效。你把 reg add 那行改成 ...
Batcher 发表于 2014-10-14 14:09
下面是问题重现,请帮忙看看问题在哪里,谢谢!
(1) 日期格式为M/d/yyyy,直接运行C:\DelData.bat,运行正常,DelData.log内容如下。(10/07/2014文件被删除,其它保留)- 修改注册表之前
-
- ! REG.EXE VERSION 3.0
-
- HKEY_CURRENT_USER\Control Panel\International
- sShortDate REG_SZ yyyy-M-d
-
-
- The operation completed successfully
- 修改注册表之后
-
- ! REG.EXE VERSION 3.0
-
- HKEY_CURRENT_USER\Control Panel\International
- sShortDate REG_SZ yyyy-M-d
-
- "2014-10-16 08:05 PM" leq "2014-10-08"
- "2014-10-17 09:39 PM" leq "2014-10-08"
- "2014-10-18 06:26 AM" leq "2014-10-08"
- "2014-10-07 12:15 PM" leq "2014-10-08"
- "2014-10-09 09:31 PM" leq "2014-10-08"
- "2014-10-10 11:39 PM" leq "2014-10-08"
- "2014-10-11 11:33 PM" leq "2014-10-08"
- "2014-10-12 07:16 PM" leq "2014-10-08"
- "2014-10-13 10:17 PM" leq "2014-10-08"
- "2014-10-14 11:46 PM" leq "2014-10-08"
- "2014-10-16 10:07 PM" leq "2014-10-08"
- "2014-10-17 10:38 PM" leq "2014-10-08"
- "2014-10-18 05:43 AM" leq "2014-10-08"
- "2014-10-16 11:59 PM" leq "2014-10-08"
- "2014-10-17 11:59 PM" leq "2014-10-08"
- "2014-10-18 06:19 AM" leq "2014-10-08"
复制代码
(2) 日期格式更改为M/d/yyyy,第一次运行任务计划DelData,运行异常,DelData.log内容如下。(所有文件被删除)- 修改注册表之前
-
- ! REG.EXE VERSION 3.0
-
- HKEY_CURRENT_USER\Control Panel\International
- sShortDate REG_SZ M/d/yyyy
-
-
- The operation completed successfully
- 修改注册表之后
-
- ! REG.EXE VERSION 3.0
-
- HKEY_CURRENT_USER\Control Panel\International
- sShortDate REG_SZ yyyy-M-d
-
- "10/16/2014 08:05 PM" leq "2014-10-08"
- "10/17/2014 09:39 PM" leq "2014-10-08"
- "10/18/2014 06:26 AM" leq "2014-10-08"
- "10/07/2014 12:15 PM" leq "2014-10-08"
- "10/09/2014 09:31 PM" leq "2014-10-08"
- "10/10/2014 11:39 PM" leq "2014-10-08"
- "10/11/2014 11:33 PM" leq "2014-10-08"
- "10/12/2014 07:16 PM" leq "2014-10-08"
- "10/13/2014 10:17 PM" leq "2014-10-08"
- "10/14/2014 11:46 PM" leq "2014-10-08"
- "10/16/2014 10:07 PM" leq "2014-10-08"
- "10/17/2014 10:38 PM" leq "2014-10-08"
- "10/18/2014 05:43 AM" leq "2014-10-08"
- "10/16/2014 11:59 PM" leq "2014-10-08"
- "10/17/2014 11:59 PM" leq "2014-10-08"
- "10/18/2014 06:19 AM" leq "2014-10-08"
复制代码
(3) 日期格式更改为M/d/yyyy,但第二次运行任务计划DelData,运行正常,DelData.log内容同(1)
日期格式已更改为M/d/yyyy了,但任务计划返回的值仍是yyyy-M-d
作者: Batcher 时间: 2014-10-21 11:27
回复 16# sinun
你手工修改注册表,把日期格式设置成 yyyy-M-d
把任务计划里面的脚本改成这样:- @echo off
- schtasks /create /tn DelData /tr "C:\DelData.bat" /sc daily /st 18:00:00 /ru system
-
- set SrcDir=C:\Data
- set DaysAgo=10
- >"%temp%\DstDate.vbs" echo LastDate=date()-%DaysAgo%
- >>"%temp%\DstDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
- >>"%temp%\DstDate.vbs" echo wscript.echo FmtDate
- for /f %%a in ('cscript /nologo "%temp%\DstDate.vbs"') do (
- set "DstDate=%%a"
- )
- set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
- for /r "%SrcDir%" %%a in (*.*) do (
- echo "%%~ta" leq "%DstDate%">>C:\DelData.log
- if "%%~ta" leq "%DstDate%" (
- if exist "%%a" (
- del /f /q "%%a"
- )
- )
- )
复制代码
作者: apang 时间: 2014-10-21 13:00
HKEY_USERS\S-1-5-18对应的是system账户的SID,试试修改 HKEY_USERS\S-1-5-18\Control Panel\International的sShortDate值看行不行。
作者: sinun 时间: 2014-10-25 10:47
回复 sinun
你手工修改注册表,把日期格式设置成 yyyy-M-d
把任务计划里面的脚本改成这样:
Batcher 发表于 2014-10-21 11:27
按老师的要求手工修改了注册表,运行C:\DelData.bat,自动生成DstDate.vbs,可正常删除10天之前的文件
DelData.log内容如下:- "2010-11-20 09:06" leq "2014-10-15"
- "2014-10-21 10:21" leq "2014-10-15"
- "2014-10-25 10:23" leq "2014-10-15"
- "2014-10-25 10:04" leq "2014-10-15"
复制代码
运行任务计划DelData,不会生成DstDate.vbs,但也可删除10天之前的文件,10天之内的保留。DelData.log内容与上面相同。不生成DstDate.vbs,怎么计算的日期呢?
作者: sinun 时间: 2014-10-25 10:57
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,但也可以正常删除文件,请教老师这是为什么?
作者: Batcher 时间: 2014-10-25 14:45
回复 19# sinun
打开命令行窗口
cd /d "%temp%"
dir /b /a *.vbs
作者: sinun 时间: 2014-10-26 22:12
回复 21# Batcher
运行任务计划,%temp%下没有生成DstDate.vbs,而是生成在C:\WINDOWS\temp目录下。
请老师帮忙解答一下,NT AUTHORITY\SYSTEM权限下的任务计划都是有哪些特殊的属性? 谢谢!!!
作者: apang 时间: 2014-10-26 23:36
以前碰到过schtasks创建的计划任务(system账户权限),用 xcopy 复制远程机器上的文件到本地失败,但改成具有管理员权限的账户可以复制,不知道为什么。
作者: sinun 时间: 2014-10-27 05:25
回复 23# apang
是啊,对reg add也有限制,不知道system权限的计划任务到底有多少限制呢。
作者: sinun 时间: 2014-12-12 22:08
回复 13# Batcher
请大神帮帮忙,看下面这个问题该怎么解决,多谢!!!
请教批处理命令findstr的异常问题
http://bbs.bathome.net/thread-33296-1-1.html
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |