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

WinSCP PowerShell脚本仅传指定文件不上传本地文件夹及子目录求助

问题原因与修正方案

你当前的脚本存在3个核心问题导致不符合需求:

  • 调用WinSCP的PutFiles方法时传入的是本地目录路径,会默认将整个目录上传到远程,而非目录内的文件
  • WinSCP的文件掩码分隔符为分号而非逗号,你之前的掩码写法语法错误导致规则不生效
  • 多余的循环逻辑错误,变量重名导致实际每次仅上传目录本身

修正后的完整代码

# Set the folder name variables
$DirCustomerData = @("001201", "001753", "001952", "002587", "002833", "002863", "003150", "003716", 
"004826", "003010", "004099", "006222", "002545", "006805", "001433", "006839")

$LocalDir = "\customer_data\"+$DirCustomerData[$i]+"\info\"

# Check for files,仅统计当前目录下的txt、csv文件,排除子目录
$targetFiles = Get-ChildItem $LocalDir -File -Include *.txt,*.csv
if($targetFiles.Count -eq 0)
{
    "Local directory $LocalDir has currently no files. Skipping to next folder"
    "`n"
} else {
    "Local directory $LocalDir contains $($targetFiles.Count) files. Starting now FTP Upload Session..."
    "`n"
    
    # Open the FTP Session
    $session = New-Object WinSCP.Session
    $session.Open($sessionOptions)

    # Upload the files
    $transferOptions = New-Object WinSCP.TransferOptions
    $transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
    # 正确的文件掩码:分号分隔匹配规则,排除所有子目录
    $transferOptions.FileMask = "*.txt; *.csv | */";

    $RemoteDir = "/"+$DirCustomerData[$i]+"/info/"

    # 注意第一个参数加\*,表示上传目录内的内容而非目录本身,第三个参数设为$false关闭递归
    $transferResult = $session.PutFiles($LocalDir + "\*", $RemoteDir, $false, $transferOptions)

    # Throw on any error
    $transferResult.Check()

    # Print results
    foreach ($transfer in $transferResult.Transfers)
    {
        Write-Host "Upload of $($transfer.FileName) to remote FTP directory $RemoteDir succeeded."
    }
}

关键修改说明

  1. 文件路径修改:PutFiles第一个参数改为$LocalDir + "\*",指定上传目录内的所有内容,不会把本地info目录本身传到远程
  2. 关闭递归传输:PutFiles第三个参数设为$false,禁止遍历子目录,从根源上避免子目录被上传
  3. 修正文件掩码:将分隔符从逗号改为分号,符合WinSCP的掩码语法规则,| */的排除子目录规则可以正常生效
  4. 简化文件统计逻辑:直接用Get-ChildItem -File -Include统计符合要求的文件,避免不必要的参数组合
  5. 删除错误循环:原来的foreach ($LocalDirFiles in $LocalDir)逻辑完全无效,直接移除即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:45:04