You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PowerShell/WinSCP脚本实现文件上传后移动功能的技术求助

解决WinSCP SFTP上传后本地文件移动的问题

嘿,我猜你大概率是把WinSCP的远程操作方法和本地文件操作搞混了——WinSCP的Session.MoveFiles是用来操作远程服务器上的文件的,而你要把本地已上传的文件移到另一个文件夹,得用PowerShell原生的Move-Item命令来实现。下面给你调整后的完整脚本,我会把关键步骤标清楚:

修改后的完整代码

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

# Set up session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
    Protocol = [WinSCP.Protocol]::Sftp
    HostName = "xxxx"
    UserName = "xxxxx"
    Password = "xxxx"
    SshHostKeyFingerprint = "xxxxx"
}

# 定义本地路径:要上传的源文件夹、上传后要移动到的目标文件夹
$localSourcePath = "xxxxx"  # 你原来的PutFiles第一个参数路径
$localDestPath = "D:\Uploaded_Files\"  # 替换成你的目标文件夹路径

# 创建目标文件夹(如果不存在的话)
if (-not (Test-Path -Path $localDestPath)) {
    New-Item -ItemType Directory -Path $localDestPath | Out-Null
}

$session = New-Object WinSCP.Session
try {
    # Connect
    $session.Open($sessionOptions)
    
    # 1. 获取要上传的本地文件列表,避免后续移动错文件
    $filesToUpload = Get-ChildItem -Path $localSourcePath
    
    # 2. 执行上传操作并检查是否成功
    $transferResult = $session.PutFiles($localSourcePath, "xxxxxx*")
    $transferResult.Check()
    
    # 3. 遍历上传成功的文件,移动到目标文件夹
    foreach ($transfer in $transferResult.Transfers) {
        $localFilePath = $transfer.FileName
        $destFilePath = Join-Path -Path $localDestPath -ChildPath (Split-Path -Path $localFilePath -Leaf)
        
        # 移动文件,-Force参数会覆盖目标文件夹中同名文件(可选,根据你的需求调整)
        Move-Item -Path $localFilePath -Destination $destFilePath -Force
        Write-Host "已移动文件: $localFilePath -> $destFilePath"
    }
}
catch {
    Write-Host "操作出错: $_"
    throw
}
finally {
    $session.Dispose()
}

关键细节说明

  • 区分远程/本地操作:WinSCP的Session类方法都是针对远程服务器的,本地文件操作请用PowerShell原生命令(Move-Item、Get-ChildItem等)
  • 先获取文件列表:通过Get-ChildItem提前拿到要上传的文件,确保后续移动的是确实上传成功的文件
  • 创建目标文件夹:用Test-Path和New-Item确保移动目标路径存在,避免报错
  • 错误处理:添加catch块捕获异常,方便排查问题

如果之前你尝试用Session.MoveFiles来移动本地文件,那肯定会失败,因为它的参数是远程路径。现在用上面的脚本,应该就能实现你要的“上传完成后移动本地文件”的功能了。

内容的提问来源于stack exchange,提问作者Jmmitche1984

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:42:06