用于下载、重命名和移动文件的 WinSCP 脚本

2023-12-03

Disclaimer #1: I posted this question on the WinSCP's forum but haven't received any replies and this issue is time-sensitive.
Disclaimer #2: I'm basing the legitimacy of this cross-post on advice found on the subject from Meta.
With that preamble...

到目前为止,我一直在使用 WS_FTP,但想切换到 WinSCP。 我正在尝试将此 WS_FTP 脚本转换为 WinSCP:

"C:\Program Files (x86)\Ipswitch\WS_FTP 12\wsftppro.exe"
-s "sftp://USERNAME:[email protected]/USERNAME/logs/*.sqb"
-d "local:C:\PccDataRelay\LogDownloads\"
-rename tx_[yyyy]-[mm]-[dd]_[hh]-[tt]-[ss]_[OnlyName].[OnlyExt]
-move "/USERNAME/logs/transferred/"

我已经能够部分转换它:

cd C:\PccDataRelay\TestDownloads

"C:\Program Files (x86)\WinSCP\winscp.com" /ini=nul /log=C:\PccDataRelay\AuditLogs\incremental_download.log /command ^
    "open sftp://USERNAME:[email protected]/USERNAME/logs/ -hostkey=""ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx""" ^
    "get /USERNAME/logs/*.sqb" ^
    "exit"

但仅此而已下载文件。我怎样才能得到它rename and move原始文件,同时将它们保留在 FTP 站点上?


WinSCP没有类似的功能-rename and -move开关。因此,在简单的脚本中实现此任务并不容易,以便其以事务方式运行(仅重命名和移动已成功下载的文件)


但你可以使用WinSCP .NET 程序集 from a PowerShell 脚本.

# Load WinSCP .NET assembly
Add-Type -Path "WinSCPnet.dll"

# Setup session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
    Protocol = [WinSCP.Protocol]::Sftp
    HostName = "ftpus.pointclickcare.com"
    UserName = "USERNAME"
    Password = "PASSWORD"
    SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx...="
}

# Connect
Write-Host "Connecting..."
$session = New-Object WinSCP.Session
$session.SessionLogPath = "C:\PccDataRelay\AuditLogs\incremental_download.log"
$session.Open($sessionOptions)

# Download files
$transferResult =
    $session.GetFilesToDirectory(
        "/USERNAME/logs", "C:\PccDataRelay\LogDownloads", "*.sqb")

# Process source files
foreach ($transfer in $transferResult.Transfers)
{
    $oldName = $transfer.FileName
    # Success or error?
    if ($transfer.Error -eq $Null)
    {
        $newName =
            "/USERNAME/logs/transferred/tx_" +
            (Get-Date -Format "yyyy-MM-dd-hh-mm-ss") + "_" +
            [IO.Path]::GetFileName($oldName)
        Write-Host (
            "Download of $oldName succeeded, moving to backup $newName")
        $session.MoveFile($oldName, $newName)
    }
    else
    {
        Write-Host (
            "Download of $oldName failed: $($transfer.Error.Message)")
    }
}

该答案所基于的一些参考资料:

  • 上传成功后将本地文件移至其他位置;
  • 在批处理文件中格式化时间戳.

也可以看看:

  • 将WinSCP脚本转换为基于.NET汇编的代码.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于下载、重命名和移动文件的 WinSCP 脚本 的相关文章

  • 使用 PowerShell 重命名 FTP 上的文件

    有没有办法重命名 FTP 目录中的文件 我正在将实时图像从计算机流式传输到 FTP 但问题是当它将图像上传到 FTP 时 它会立即替换文件 我想先上传临时名称的图像 然后重命名为 live jpg 这就像缓存文件上传一样 while tru
  • 紧凑框架 - OpenNetCf.Net FTP 示例?

    我正在尝试让 OpenNetCF Net FTP 组件与我的 PDA 应用程序一起工作 除了连接到服务器之外 我正在努力让它做更多的事情 并且想知道是否有人知道我可以用来学习如何使用它的任何示例代码 我需要能够下载和上传文件 以及确定我想要
  • 获得使用 FTP-WinSCP 处理我的 Amazon EC2 Ubuntu 服务器上的文件的权限

    我在 Amazon 上有一个 Ubuntu 服务器 我安装了使用它的所有内容 php mysql phpmyadmin apache 问题是我无法使用 FTP 移动或编辑文件 我收到错误消息 Permission denied Error
  • 使用 Jcraft 通过 SFTP 传输文件

    项目清单 我可以编写一个java程序通过SFTP传输文件 但是 这将包含一个带有可执行命令的脚本 这可以通过 Jcraft 实现吗 比方说 示例脚本文件是这样的 cd pub ascii get filename txt put other
  • 选择 FTP 和 HTTP 传输的缓冲区大小

    在实现低级 HTTP 和 FTP 传输时 如何选择缓冲区的大小 从套接字读取或写入套接字的字节数 以获得最大吞吐量 我的应用程序应该在 130 Kbps 到 3 Mbps 的连接上使用 HTTP 或 FTP 传输数据 我事先知道预期的速度
  • 在SSIS中使用执行进程任务和WinSCP进行SFTP传输

    我有一个User file txt文件放置在 WinSCP 根文件夹 USERDATA 中 我正在尝试将其下载到给定位置C User Local Executable C Program Files x86 WinSCP WinSCP ex
  • 在 FTP 上上传文件

    我想将文件从一台服务器上传到另一台 FTP 服务器 以下是我上传文件的代码 但它抛出错误 远程服务器返回错误 550 文件不可用 例如 未找到文件 无法访问 这是我的代码 string CompleteDPath ftp URL strin
  • Java:从 FTP 服务器访问文件

    我有一个 FTP 服务器 里面有一堆文件夹和文件 我的程序需要访问该服务器 读取所有文件并显示它们的数据 出于开发目的 我一直在使用硬盘驱动器上 src 文件夹中的文件 但现在服务器已启动并运行 我需要将软件连接到它 基本上我想要做的是获取
  • FTP 错误 530 用户无法登录

    我正在尝试通过 FTP 访问我使用 Windows Server Web 64 位 版本的 IIS 7 0 设置的新 FTP 站点 但是当我尝试登录该网站时出现上述错误 但我可以登录到我的其他 FTP 站点 另外 当我从 IIS 管理器中选
  • 如何通过php按修改日期对文件进行排序

    背景 我有一个匿名登录 ftp 服务器 ftp nlist 仅按字母顺序列出文件 我想根据上次修改日期获取文件列表 最近的在前 我尝试了 ftp exec conn ls t 但出现了 权限被拒绝 错误 不知道为什么它不起作用 好吧 我正在
  • 使用 .NET 进行选择性 FTP 下载

    我有一个 ftp 构建站点 新构建将在其中更新 它将在每个新构建的特定 ftp 位置创建一个名为 Build XXXXX 的新文件夹 我需要从 Build XXXXX 目录中的某个位置下载构建版本 例如 Builds Build XXXXX
  • PowerShell 脚本将文件(但不包括子文件夹)复制到 SFTP,并在完成后移动到子文件夹

    我正在使用以下脚本将文件从本地文件夹复制到 SFTP 上传文件后 我想将文件移动到子文件夹中 我只想上传以下文件C Users Administrator Desktop ftp文件夹 而不是其他子文件夹中的文件 param backupP
  • 使用 PHP 进行安全 FTP 连接

    我有一个带有登录详细信息的安全 FTP 服务器 我正在尝试使用 PHP 连接到该安全 FTP 服务器ftp ssl connect ftp connect and ftp login函数并将所有参数正确传递给该函数 但我惊讶地发现它没有连接
  • Twisted、FTP 和“流式传输”大文件

    我正在尝试实现最能描述为 HTTP API 的 FTP 接口 的内容 本质上 有一个现有的 REST API 可用于管理站点的用户文件 并且我正在构建一个中介服务器 将该 API 重新公开为 FTP 服务器 因此 您可以使用 Filezil
  • 使用PHP通过FTP递归扫描目录和子目录

    我正在尝试创建目录中所有文件 及其大小 的列表 包括子目录中的所有内容 这些文件位于远程服务器上 所以我的脚本通过 FTP 连接 然后使用以下命令运行递归函数ftp chdir浏览每个目录 如果有其他方法可以做到这一点 我愿意接受建议 fl
  • 如何从 Visual Studio Online 在 FTP 上部署工件?

    我已经在 Visual Studio Online 上设置了自动构建 并且能够在构建下获取工件 现在我想在 FTP 上部署工件 由于我的网站托管在 GoDaddy 上 并且他们为我提供了 FTP 帐户 任何人都可以帮我设置此帐户吗 这可以通
  • 在2.0中实现SFTP

    我想在 NET 2 0 中编写SFTP 客户端和服务器 那可能吗 请给我一些建议 看一眼SharpSSH http www tamirgal com blog page SharpSSH aspx 它具有开源 BSD 风格许可证 并支持 S
  • Filezilla - 需要将项目从服务器复制到桌面[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这可能非常简单明了 但我对 Filezilla 不太熟悉 不能犯错误 我需要将文件从服务器复制到桌面 而不实际将其从服务器中删除 实时站点
  • Indy FTP 传输类型

    我正在使用 IdFTP Indy 10 组件从远程位置下载一些文件 zip 和 txt 在获取每个文件之前 我将 TransferType 设置为二进制 IdFTP TransferType ftBinary IdFTP Get ASour
  • Java FTPS 无法检索文件列表(FileZilla 客户端工作正常)

    我正在使用 Apache Commons Net v3 5 和 Java 8 连接到远程 FTPS 站点 即在互联网上 我可以轻松连接 Windows 10 计算机上的 FileZilla 客户端 但我的 Java 程序无法完成相同的步骤

随机推荐

  • 插入数据并获取返回的 id 后如何修复 DapperExtensions 错误

    I use 简洁的扩展将数据拉取和推送到数据库 I use unsigned intid 作为我的主键database并在class以及 我的课看起来像这样 public class Product Column id public uin
  • CodePipeline 的 Cloudformation 模板

    我们有一个 aws 设置 其中有一个测试帐户和一个生产帐户 我们的代码提交 java lambda 位于我们的测试帐户中 我们希望使用 CodePipeline 将代码从此处部署到我们的测试帐户和生产帐户 我想知道是否有人知道任何可以执行此
  • 另一个视图控制器中属性的内联 KVO

    我有一个带有动态变量 值 的 vc 我需要知道它何时在调用 cv 的闭包中发生更改 目标VC objc dynamic var value String source if let vc TagButtonPopupViewControll
  • 如何确认邮件来源

    我从我的 smtp 服务器发送电子邮件 例如 设置From to 电子邮件受保护 收件人会认为电子邮件来自anydomain 如何确认邮件来源 处理电子邮件伪造的方法有多种 Use PGP or SSL 签名证书 Use SPF 检查Rec
  • 使用 css 在子菜单前添加三角形

    如何在下面的示例中添加三角形Fiddle 我需要删除具有白色背景的父菜单并显示三角形以使其看起来更像这样 我尝试添加以下 css 但它不起作用 dropdown li first child gt a after content posit
  • 以编程方式将文件夹复制并粘贴到映射的网络驱动器中

    我试图在映射的网络驱动器上复制一个文件夹 不是文件 而是整个目录 并将其新版本以不同的名称粘贴到同一位置 如果我使用本地驱动器 下面的代码效果很好 但是 我在使用网络驱动器时遇到身份验证错误 DirectoryCopy mappedserv
  • 在 Java-8 中重构多个 If' 语句

    我需要验证班级中的必填字段 例如 9字段不得是null 我需要检查它们是否全部为空 但我现在使用多个 if 语句 如下所示 StringBuilder mandatoryExcessFields new StringBuilder MAND
  • 没有 ObservableDataService 的提供者

    我收到错误 No provider for ObservableDataService ObservableDataService https github com sanex3339 bannerscreator blob master
  • 使用 mutate_at 用列名更新单元格值

    我正在处理调查数据 有些问题要求参与者检查所有适用于他们的选项 在我当前拥有的数据框中 每个可能的响应都有一列 如果参与者选择了该选项 则记录值为 1 例如 对于问题 您在工作中经历过以下哪种情绪 使用选项 无聊 压力 满足 我的数据框将如
  • 将表单输入值发送到 URL

    我有一个简单的搜索表单
  • GitHub 中的分支之间合并

    我分叉了一个 GitHub 存储库 然后我向我的叉子推送了一些更改 然后原始存储库合并了我的更改和其他一些更改 现在 我想合并那些我缺少的更改 我尝试了简单的拉动 然后推送 但这会产生重复的提交 最好的方法是什么 您可能对每个存储库都有一个
  • ModuleNotFoundError:没有名为“camelot”的模块

    我想从 pdf 中提取表格并为此 我用的是卡米洛特 但每当我尝试导入它时 我都会收到此错误 import camelot Traceback most recent call last File
  • C/C++签名中两个const的含义

    我一直在包装一个 gl 文件scheme并且失败了两次gl h标头 我使用的是 OSx 所以它可能依赖于平台 但我在生活中的其他地方从未见过这种语法 typedef void glMultiDrawElementsProcPtr GLenu
  • 使用结构体在 C 中输入 CSV 文件

    我想打印来自的数据 csv逐行文件 由comma分隔符 此代码打印垃圾值 enum gender M F struct student int stud no enum gender stud gen char stud name 100
  • 使用 EF4 实施识别关系

    我目前的情况是需要删除实体而无法访问关联的实体ObjectContext 我读到了有关识别关系的内容 它们似乎正是我所需要的 一旦一个对象不再被其 父 对象引用 我想删除该对象 我正在使用 Visual Studio 2010 Premiu
  • 如何在Python中比较列表/集合的列表?

    比较两个列表 集合并输出差异的最简单方法是什么 是否有任何内置函数可以帮助我比较嵌套列表 集合 Inputs First list Test doc 1a1a1a 1111 Test2 doc 2b2b2b 2222 Test3 doc 3
  • 是否可以使用元组中传递的参数的所有可能的 K 组合(带重复)来调用方法?

    所需的行为可以如下所示 void foo int x int y std cout lt lt x lt lt lt lt y lt lt std endl int main all combinations lt 2 gt foo std
  • 在 Jython 中全面捕获异常

    到目前为止 这是我尝试捕获 Jython 代码中的所有异常 我发现 最困难的事情是当您重写 Java 类中的方法时捕获异常 使用下面的 vigil 装饰器 它还测试 EDT Event Despatch Thread 状态是否正确 您可以找
  • 对于某些正整数 n,m (int)pow(n,m) 会错误吗?

    Assuming n and m are positive integers and nm is within the range of an integer will int pow n m ever give a wrong answe
  • 用于下载、重命名和移动文件的 WinSCP 脚本

    Disclaimer 1 I posted this question on the WinSCP s forum but haven t received any replies and this issue is time sensit