2

我正在尝试将文件从本地系统上传到使用 T-SQL cmd 在 Linux 机器中配置的 FTP。我创建了一个批处理文件,其中包含要执行的命令,该命令cmd在使用 xp_CMDShell 在 SQL 中调用相同的批处理文件时在 T-SQL 中无法正常工作。请在下面找到我使用过的命令。

批处理文件命令:

cd C:\Program Files\PuTTY
psftp.exe
open FTPip
username
password
put D:\localpath\filename /home/destinationpath/filename
quit 

T-SQL:

EXEC master..xp_CMDShell 'D:\batchfilepath\batchfile.bat'

T-SQL 响应:

C:\Windows\system32>cd C:\Program Files\PuTTY NULL C:\Program Files\PuTTY>psftp.exe psftp:未指定主机名;使用 "open host.name" 连接 psftp> quit NULL C:\Program Files\PuTTY>open ftpip 'open' 不是内部或外部命令、可运行程序或批处理文件。NULL C:\Program Files\PuTTY>username 'username' 不是内部或外部命令、可运行程序或批处理文件。NULL C:\Program Files\PuTTY>password 'password' 不是内部或外部命令、可运行程序或批处理文件。NULL C:\Program Files\PuTTY>quit
'quit' 不是内部或外部命令、可运行程序或批处理文件。无效的

请让我知道我在哪里失踪。

4

1 回答 1

0

您正在将psftp命令和 Windows 命令组合到一个文件中。那是行不通的。批处理文件在调用 时停止psftp并等待它完成。psftp相反,它甚至不知道批处理文件存在,因此它无法从那里读取其命令。

将您的psftp命令(open尽管是行quit)放入一个单独的文件(upload.txt)并使用以下命令执行它:

"C:\Program Files\PuTTY\psftp.exe -b c:\path\to\upload.txt

(您可以直接从 T-SQL 执行该命令或将其放入批处理文件)


cmd请注意,与您在问题中声称的相反,您的批处理文件不能从中工作。您可能的意思是,cmd手动输入这些行是可行的,还有什么。

于 2019-01-29T13:51:47.650 回答