我制作了一個 Powershell 腳本,將 .txt 和 .csv 檔案從本地檔案夾傳輸到遠程目錄。
我想排除子目錄并僅從本地檔案夾傳輸 .txt .csv 檔案。
$transferOptions.FileMask = "*.txt, *.csv |*/";
如果我在這里添加排除掩碼 | */ 腳本什么都不做。沒有檔案被傳輸或排除。
如果我洗掉它,腳本可以作業,但整個本地資訊檔案夾及其檔案將傳輸到遠程目錄。
我只想遠程傳輸 .txt 和 .csv 檔案,而不是本地檔案夾本身。
這是我的腳本的傳輸部分的樣子:
# 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
if((Get-ChildItem $LocalDir | Measure-Object).Count -eq 0)
{
"Local directory $LocalDir has currently no files. Skipping to next folder"
"`n"
} else {
"Local directory $LocalDir contains " (Get-ChildItem $LocalDir -Recurse -File -Exclude -Directory | Measure-Object | %{$_.Count}) " files. Starting now FTP Upload Session..."
"`n"
# Retrieve the local files
$LocalDirFiles = Get-ChildItem $LocalDir
# 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/"
foreach ($LocalDirFiles in $LocalDir) {
$transferResult = $session.PutFiles($LocalDir, $RemoteDir, $true, $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."
}
}
}
你能幫我在這里只傳輸所需的檔案并排除子目錄嗎?謝謝!
uj5u.com熱心網友回復:
localPath論據的Session.PutFiles檔案說:
要上傳的本地檔案或目錄的完整路徑。路徑中的檔案名可以替換為 Windows 通配符以選擇多個檔案。要上傳目錄中的所有檔案,請使用 mask
*。
您的代碼缺少掩碼,它應該是:
$LocalDir = "\customer_data\" $DirCustomerData[$i] "\info\*"
注意*. 并且localDir變數名稱不符合該值的用途。
更直接的是使用Session.PutFilesToDirectory,它適用于您當前的路徑值:
$session.PutFilesToDirectory($LocalDir, $RemoteDir, $true, $transferOptions)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/362442.html
標籤:电源外壳 FTP winscp winscp-net
