通过批处理文件将参数(目录名)从MATLAT传递到WinSCP脚本

时间:2015-05-07 23:10:00

标签: windows matlab batch-file cmd winscp

我必须远程传输文件,这些文件位于不同的目录中。目录与Google云端硬盘同步,每天都有新增功能。我想运行一个每天工作一次的脚本,并将转移那些新的目录。我可以处理选择新目录的部分。我正在使用MATLAB进行这些目录操作。为了传输文件,我编写了一个Windows bat文件,该文件调用另一个执行传输的WinSCP脚本。到目前为止,没有问题。

我的问题是,当我从MATLAB调用windows bat文件时,我想为特定目录执行此操作。例如,我的目录名称是dir_1dir_2等,我希望与目录号具体相关。更具体地说,我想使用指定目录名称的参数整数来调用bat文件。从那个bat文件,当我调用WinSCP脚本文件时,我想将它作为参数传递给传输特定目录。

让我们举个例子:

从MATLAB我打电话:

dos(`PathToBatFile.bat`)

bat文件包含(调用WinSCP):

cd C:\winscp

WinSCP.com /script="test.bat"

test.bat包含(执行实际转移):

open sftp://uname:pass@webaddress.com/ -hostkey="ssh-rsa 2048 xx:xx:xx"

put D:\mydrive\file_1.txt   /home/user/

close

exit

因此,在这些脚本中,我将file_1.txt转移到远程位置。我想为特定目录执行此操作,我可以从MATLAB获取其名称(MATLAB中的dos()命令在我获取目录号的循环中运行。)

1 个答案:

答案 0 :(得分:2)

从MATLAB中,您将目录名称作为命令行参数传递给批处理文件:

dos(`PathToBatFile.bat dir_1`)

在批处理文件中,您使用%1引用参数。 WinSCP使用/parameter switch

接受其脚本的参数
cd C:\winscp

WinSCP.com /script="test.bat" /parameter %1

在WinSCP脚本中,您使用%1% syntax

来引用其参数
put D:\mydrive\file_1.txt   /home/user/%1%/

这只是一个例子。我不确定你想在哪里使用dir_1

另请参阅使用Parametrized script in WinSCP的示例。

请注意,WinSCP可以自己同步目录树。因此,您可以在不自行实施新文件夹检测的情况下执行此操作。

请参阅使用WinSCP的Automating synchronization to FTP or SFTP server指南。