【问题标题】:Passing argument (directory name) from MATLAB via batch file to WinSCP script通过批处理文件将参数(目录名称)从 MATLAB 传递到 WinSCP 脚本
【发布时间】:2015-07-18 17:44:28
【问题描述】:

我必须远程传输位于不同目录中的文件。这些目录与 Google Drive 同步,并且每天都有新的添加。我想运行一个每天运行一次的脚本,并将传输那些新的目录。我可以处理选择新目录的部分。我正在使用 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() 命令在循环中运行,我在其中获取目录号)。

【问题讨论】:

    标签: windows matlab batch-file cmd winscp


    【解决方案1】:

    在 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 指南。

    【讨论】:

      猜你喜欢
      • 2015-08-18
      • 2011-09-15
      • 2017-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多