gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 11:50:51 30 4
gpt4 key购买 nike

我必须远程传输位于不同目录中的文件。目录与 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() 命令在我获取目录编号的循环中运行)。

最佳答案

在 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 可以自行同步目录树。因此,您可以在不自行实现新文件夹检测的情况下执行此操作。

参见指南Automating synchronization to FTP or SFTP server使用 WinSCP。

关于windows - 通过批处理文件将参数(目录名)从 MATLAB 传递到 WinSCP 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30113149/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com