2014-09-10 38 views
0

我在SSIS中使用腳本任務。所以我寫在vb.net。我有這結束了寫兩個文件中的代碼大量:一個是它這個確切內容.bat文件,減我已經改變主機名用戶名,當然密碼VB.NET - Shell批處理文件與手動打開批處理文件=不同的結果,PSFTP.exe

C:\Users\ipisors\AppData\Local\Temp\091014121929_Phoenix\psftp.exe -pw PASSWORD -b C:\Users\ipisors\AppData\Local\Temp\091014121929_Phoenix\091014121929.txt [email protected] 

(我確定它有這個,因爲我在腳本任務運行後手動檢查它)。

在命令中引用的.txt文件的內容是這樣的EXACTLY:

cd uploads 
cd OUT 
mget PhoenixEnrollment_20140910*.txt 
bye 

我的問題 -

腳本任務成功運行後,沒有下載文件的目錄內PSFTP.EXE(C:\ Users \ ipisors \ AppData \ Local \ Temp \ 091014121929_Phoenix)。沒有。 但是,如果我手動雙擊腳本任務應該SHELL()的同一批處理文件,它會立即完美工作。幾秒鐘內,有C內下載的文件:\用戶\ ipisors \應用程序數據\本地的\ Temp \ 091014121929_Phoenix

怎麼可能是從FTP服務器上的反應不同,我的腳本任務代碼之間:

Shell(strBatPhoenix, AppWinStyle.NormalFocus, True) 

(其中的方式 - 是的,我可以清楚地看到它的工作) 並雙擊相同DA * N文件 我也調試的腳本任務,它的定義炮擊了完全相同的bat文件。 請幫忙! 我會說到SFTP網站的密碼有一個插入符號(^),它通過使用雙字符脫口而出。

回答

0

想通了之後,另外測試的另一種方式:

我用命令提示符本身運行我的批處理文件。它也沒有下載到預期的目錄。我開始懷疑,即使Shell在'desired'文件夾中自動執行批處理文件......該批處理文件然後正在讀取'local'目錄,因爲任何調用應用程序最初都會將其清除。

在這種情況下:c:\ users \ myusername。這是我的檔案。

要汲取的教訓:即使該批處理文件將另一個文件封裝在另一個文件中,也可能以一個應用程序或另一個應用程序作爲執行第一個shell的應用程序的即時目錄讀取即時目錄,而不是最後一個shell。