2014-09-10 32 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。