2017-07-31 50 views
1

我通過FTP將文件(每個工作日生成)傳輸到遠程目錄。我已經設置了一個Windows計劃任務,通過WinSCP自動完成傳輸,其腳本將作爲參數加載。使用WinSCP從上一個工作日上載文件到FTP

文件名格式爲prefixYESTDATE.txt

我使用%TIMESTAMP-1D#yyyymmdd%組成從而改變每個工作日的文件名。

週一我的邏輯-1DTIMESTAMP會失敗(因爲它返回星期日)。

我正在尋找一種方法來爲腳本設置正確的YESTDATE星期一。

腳本:

open ftp://uname:[email protected]/ 
cd destFolder 
put prefix%TIMESTAMP-1D#yyyymmdd%.txt 
close 
exit 

回答

1

正確「昨天星期一」「星期日」

WinSCP %TIMESTAMP% syntax不能計算工作日。


您可以使用以下PowerShell script with a use of WinSCP .NET assembly

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

# Setup session options 
$sessionOptions = New-Object WinSCP.SessionOptions 
$sessionOptions.Protocol = [WinSCP.Protocol]::Ftp 
$sessionOptions.HostName = "ftp.example.com" 
$sessionOptions.UserName = "user" 
$sessionOptions.Password = "password" 

$session = New-Object WinSCP.Session 

# Connect 
$session.Open($sessionOptions) 

# Calculate previous weekday 
$d = Get-Date 
$d = $d.AddDays(-1) 
if ($d.DayOfWeek -eq "Sunday") 
{ 
    $d = $d.AddDays(-1) 
} 
if ($d.DayOfWeek -eq "Saturday") 
{ 
    $d = $d.AddDays(-1) 
} 

$timestamp = $d.ToString("yyyyMMdd") 

# Upload the file 
$session.PutFiles("C:\source\path\prefix$timestamp.txt", "/remote/path/").Check() 

# Disconnect, clean up 
$session.Dispose() 

參見:

第二個鏈接顯示如何計算以前的工作日在批處理文件中使用(儘管仍然使用PowerShell),如果要繼續使用批處理文件。

+0

謝謝馬丁.. –

+0

不客氣。儘管我假設你知道,在Stack Overflow上,我們感謝[接受和/或upvoting答案](// stackoverflow.com/help/someone-answers)。 –