我在SSIS中使用脚本任务。所以我在vb.net上写。我有大量的代码,最终编写了两个文件:一个是带有此EXACT内容的.bat文件,减去我已更改主机名,用户名,和密码当然:
C:\Users\ipisors\AppData\Local\Temp\091014121929_Phoenix\psftp.exe -pw PASSWORD -b C:\Users\ipisors\AppData\Local\Temp\091014121929_Phoenix\091014121929.txt USERNAME@HOST
(我确定它有这个,因为我在Script Task运行后手动检查它)。
命令中引用的.txt文件的内容是完全正确的:
cd uploads
cd OUT
mget PhoenixEnrollment_20140910*.txt
bye
我的问题 -
脚本任务成功运行后,PSFTP.EXE目录中没有下载的文件(C:\ Users \ ipisors \ AppData \ Local \ Temp \ 091014121929_Phoenix)。没有。 但是,如果我手动双击脚本任务应该SHELL()的同一个批处理文件,它会立即完美地运行。几秒钟内,C:\ Users \ ipisors \ AppData \ Local \ Temp \ 091014121929_Phoenix中有一个下载的文件
在我的脚本任务代码之间,与FTP服务器的反应可能有什么不同:
Shell(strBatPhoenix, AppWinStyle.NormalFocus, True)
(顺便说一下 - 是的,我真的可以看到它正常工作!) 并双击相同的da * n文件 我还调试了脚本任务,它的定义是Shelling out EXACT SAME bat文件。 请帮忙! 我会说SFTP站点的密码中有一个插入符号(^),我使用双插入符号来逃避。
答案 0 :(得分:0)
在另外测试另一种方法后想出来:
我使用命令提示符本身来运行我的批处理文件。它也没有下载到预期的目录。我开始怀疑,即使Shell正在自动化“所需”文件夹中的批处理文件......然后该批处理文件正在读取“本地”目录,因为任何调用应用程序最初都将其清除。
在这种情况下:c:\ users \ myusername。这是我的档案。
要学习的课程:将批处理文件打包,即使该批处理文件包含另一个文件,最终可能会有一个应用程序或另一个应用程序将您的即时目录读取为执行第一个shell的应用程序的即时目录,而不是最后一个贝壳。