使用批处理脚本自动上载WinSCP的SFTP文件时出错



我对WinSCP和批处理文件脚本都很陌生。如果这个问题很基本,请原谅。我正在尝试使用批处理文件将文件从本地文件夹上载到远程文件夹。文件的名称每周都会更改。我面临两个问题。

  1. 我在批处理文件中使用以下代码将文件上传到WinSCP
"C:Program Files (x86)WinSCPWinSCP.com" ^
/command ^
open sftp://descartes:z*******s@sftp.psdataservices.com/ -hostkey="ssh-rsa 1024 ******=" ^
"lcd  C:Userskajal.jainDownloadsNew folder" ^
"cd /" ^
"put Week 7 2022 Portal Data" ^
"exit"

我得到了以下错误。

Unknown command 'lcd  C:Userskajal.jainDownloadsNew folder'.
Same for cd 
  1. 由于要上传的文件的名称每周都会更改。如何在Put命令中实现自动化
  1. 添加引号由于WinSCP需要它的所有命令都用双引号括起空格(请参阅此处的语法参考(,所以我会先在open ...命令周围放一些,然后在lcdput命令中的其他路径周围放一些。您可以在命令中使用两个双引号来表示文字"

  2. 传入文件名可以使用%1引用此批处理文件的第一个命令行参数。因此,如果您将下面的脚本保存为";upload.bat";。。。

"C:Program Files (x86)WinSCPWinSCP.com" ^
/command ^
"open sftp://descartes:z*******s@sftp.psdataservices.com/ -hostkey=""ssh-rsa 1024 ******=""" ^
"lcd  ""C:Userskajal.jainDownloadsNew folder""" ^
"cd /" ^
"put %1" ^
"exit"

然后从命令行您可以键入

upload "Week 7 2022 Portal Data"

让它上传那个文件(引号也很重要(。

另一种选择——我让你研究一下——如果你根本不想给它一个文件名,你可以使用SET命令进行探索,这样它就可以像总是查找和上传一个以今天日期命名的文件一样。有关批处理参数和SET的更多信息,请点击此处。

最新更新