簡體   English   中英

Windows批處理文件和FTP日期戳

[英]Windows Batch File and an FTP Datestamp

我正在努力掌握編寫批處理文件的概念。 我希望安排一個.bat文件來每天下載帶有時間戳的文件。 設置計划任務等很簡單,當我嘗試執行代碼以獲取文件名的固定部分並附加一個日期戳以標識適當的文件時,就會出現我的問題。

從我完成的研究中,我仍然無法獲取我的代碼以YYYYMMDD格式提取昨天的日期。 例如。 今天是8月15日,我希望我的批次用20130814標識文件。exisitng(靜態)ftp批次代碼是

option confirm off
option batch abort
open Ftp_name
lcd "U:\XXXX\YYYY\ZZZZ"

get "LoanSummary__Daily.xlsx"

而我希望該批次考慮。

get "LoanSummary__Daily_" & YYYYMMDD & ".xlsx"

謝謝。

我認為您無法在FTP腳本中動態建立文件名。 但是,您可以在調用之前使用批處理文件動態構建ftp腳本。

最簡單的方法是創建一個ftp腳本模板,該模板的變量部分表示為具有延遲擴展的環境變量。 例如, !yesterday! 可以引用擴展到昨天日期的環境變量。 一個簡單的FOR / F循環讀取模板,並將每一行寫入新的ftp腳本文件。 只要啟用了延遲擴展,變量就會在過程中自動擴展。

在Windows批處理文件中獲取昨天的日期並非易事。 在SO以及其他站點上已經發布了許多方法。 大多數方法都有各種局限性,其中最常見的是由於語言環境日期格式的差異而容易出現問題。 我使用了一個名為getTimestamp.bat的混合批處理/ JScript實用程序,該實用程序可以在XP及更高版本的任何Windows平台上運行,無論使用哪種語言環境。 它是純腳本,因此無需下載.exe。 getTimestamp.bat在這里可用

假設getTimestamp.bat位於您當前的目錄中,或者更好的是位於PATH中的某個位置,則應該可以進行以下操作。

getYesterday.ftp.template

option confirm off
option batch abort
open Ftp_name
lcd "U:\XXXX\YYYY\ZZZZ"

get "LoanSummary__Daily_!yesterday!.xlsx"

getYesterday.bat

@echo off
setlocal enableDelayedExpansion

:: Get yesterday's date in YYYYMMDD format
call getTimestamp -od -1 -f {yyyy}{mm}{dd} -r yesterday

:: Create a temporary ftp script that uses the "yesterday" date
>temp.ftp (for /f "delims=" %%L in (getYesterday.ftp.template) do echo %%L)

:: Now simply invoke your ftp client using the temp script, something like
ftp -s:temp.ftp ...

:: Delete the temporary ftp script
del temp.ftp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM