2015-05-05 57 views
-1

我有批处理脚本文件,它应该使用pgp加密文件。我已经在任务调度程序中定义了一个任务来执行此操作,但我一直收到错误“系统找不到指定的文件”。系统找不到指定的文件 - 任务计划程序

有趣的是,当我在PowerShell中运行同一行脚本时,已成功生成加密文件。

我想知道是否有人知道这里可能会出现什么错误?

我试图给出我的批处理脚本中的完整路径,并在定义动作时在开始部分添加了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 
+0

请发布您的代码,以便我们实际上可以看到问题所在,而不仅仅是猜测。 – SomethingDark

+0

包含批处理变量('%d%')的powershell单线程工作正常吗?真? – SomethingDark

+0

哦不,我在两个版本中都复制了旧版本,我添加了日期。让我为你修复代码。 –

回答

0

最后我终于解决了这个问题。问题在于用户权限。批处理脚本假设要加密文件,然后将加密文件ftp到供应商的ftp服务器。

显然,在Windows Server 2012中,管理员有权创建文件(这里是加密文件),但该用户没有发送权限。 SYSTEM用户有权发送但不创建。 (他们两人都在Win Server 2012中拥有此权限)。

那么我最后做了什么,是做两个不同的批处理脚本任务,并安排他们10分钟的时间距离。第一个用ADMINISTRATOR权限运行上面的代码,第二个用SYSTEM发送出去。

0

如果您的批处理文件没有按”但是PowerShell脚本可以,只需从计划任务中运行PowerShell脚本即可。

从计划任务中,而不是输入批处理文件的路径指定PowerShell.exe(或更可能是C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Powershell.exe)。然后在参数框中指定您的参数。您可能想要隐藏窗口,因此我们将其添加到参数中,为此,您可以跳过加载配置文件,因此我们也会添加该配置文件。然后只需使用-Command参数来指定您在问题中的代码。

所以你要运行的程序框应显示:

C:\Windows\System32\WindowsPowerShell\v1.0\Powershell.exe 

然后,说盒子“添加参数(可选)”应该有:

-NoProfile -WindowStyle Hidden -command "gpg2 --batch --yes -r testkey --output c:\test\foo\test_$((get-date).ToString(yyyyMMdd)).pgp --encrypt c:\test\foo\test_$((get-date).ToString(yyyyMMdd)).txt >> c:\apps\ftpLogs\test.log" 

在一个侧面说明,应该说是gpg2或pgp2?我只是复制你的命令,但我觉得他们会这样命名,这似乎很奇怪。

相关问题