我必须远程传输文件,这些文件位于不同的目录中。目录与Google云端硬盘同步,每天都有新增功能。我想运行一个每天工作一次的脚本,并将转移那些新的目录。我可以处理选择新目录的部分。我正在使用MATLAB进行这些目录操作。为了传输文件,我编写了一个Windows bat文件,该文件调用另一个执行传输的WinSCP脚本。到目前为止,没有问题。
我的问题是,当我从MATLAB调用windows bat文件时,我想为特定目录执行此操作。例如,我的目录名称是dir_1
,dir_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()
命令在我获取目录号的循环中运行。)
答案 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指南。