繁体   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