2015-05-05 76 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?我只是複製你的命令,但我覺得他們會這樣命名,這似乎很奇怪。

相關問題