我有批处理脚本文件,应该用pgpencryption文件。 我已经在任务调度程序中定义了一个任务来执行此操作,但是我一直在收到错误“系统找不到指定的文件”。
有趣的是,当我在PowerShell中运行同一行脚本时,encryption文件已成功生成。
我想知道有没有人知道这里可能是错的?
我试图在批处理脚本中给出完整的path,并且在定义动作的时候也在开始部分添加了pass。
批处理脚本代码在这里::
rem @echo off @set path=c:\test;%path% @set d=%date:~-4,4%%date:~4,2%%date:~-7,2% @set d=%d: =_% @set t=%time:~0,2%%time:~3,2%%time:~6,2% @set t=%t: =0% Rem Generate PGP encrypted file @echo Starting PGP... >> c:\apps\ftpLogs\test.log gpg2 --batch --yes -r testkey --output c:\test\foo\test_20150505.pgp --encrypt c:\test\foo\test_20150505.txt >> c:\apps\ftpLogs\test.log
和我运行在我的PowerShell,这工作正常,脚本是这一行:
gpg2 --batch --yes -r testkey --output c:\test\foo\test_20150505.pgp --encrypt c:\test\foo\test_20150505.txt >> c:\apps\ftpLogs\test.log
最后我能解决这个问题。 问题在于用户权限。 批处理脚本假设要encryption文件,然后将encryption文件ftp到供应商的ftp服务器。
显然在Windows Server 2012中,pipe理员有权创build一个文件(这里是encryption文件),而这个用户没有权限发送它。 SYSTEM用户有权发送但不创build。 (他们两个都在Win Server 2008中拥有这个权限)。
因此我最后做了什么,是做两个不同的批处理脚本任务,并以10分钟的时间间隔安排它们。 第一个用ADMINISTRATOR权限运行上面的代码,第二个用SYSTEM发送出去。