2017-07-31 4 views
1

FTP経由でリモートディレクトリにファイルを転送します。私はWinSCP経由で転送を自動化するWindowsのスケジュールされたタスクをセットアップしました。これは引数としてロードされます。WinSCPを使用して、前週の曜日からFTPにファイルをアップロードします。

ファイル名の形式は、私は平日に変更し、ファイル名を構成する%TIMESTAMP-1D#yyyymmdd%を使用していますprefixYESTDATE.txt

です。

月曜日、-1Dの論理はTIMESTAMPになります(日曜日を返すので)。

私はスクリプトの月曜日に正しい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() 

も参照してください:

2番目のリンクは、バッチファイルを使用し続ける場合は、バッチファイル(PowerShellを使用していますが)で使用する前の曜日を計算する方法を示しています。

+0

ありがとうマーティン.. –

+0

あなたはようこそ。私はあなたが知っていると思うが、スタックオーバーフローでは、[回答を受け入れるか、または上回る](// stackoverflow.com/help/someone-answers)に感謝する。 –

関連する問題