2017-07-31 53 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)。 –