【问题标题】:How to use date variables in PuTTY/PSFTP batch-script?如何在 PuTTY/PSFTP 批处理脚本中使用日期变量?
【发布时间】:2015-06-30 14:59:17
【问题描述】:

我喜欢在 PuTTY/PSFTP 批处理脚本中使用日期变量来选择文件名中带有特定时间戳的文件。

但我在docs 中找不到任何内容。 PuTTY/PSFTP 批处理脚本 是否有使用 date-variables 的命令,或者有没有办法将 Windows 批处理变量 传递给 PSFTP?

文件如下所示:FILENAME_2015-06-25.TXT(基于当前日期)


类似这样的:

cd /subdir
get FILENAME_%year%-%month%-%day%.TXT
quit

Windows 批处理文件中,我可以通过以下方式轻松获取当前日期:

SET YEAR=%DATE:~-4%
SET MONTH=%DATE:~-7,2%
SET DAY=%DATE:~-10,2%

ECHO FILENAME_%YEAR%-%MONTH%-%DAY%.TXT

【问题讨论】:

    标签: putty


    【解决方案1】:

    您必须像这样动态生成 psftp 脚本文件:

    SET YEAR=%DATE:~-4%
    SET MONTH=%DATE:~-7,2%
    SET DAY=%DATE:~-10,2%
    
    ECHO cd /subdir > script.txt
    ECHO get FILENAME_%YEAR%-%MONTH%-%DAY%.TXT >> script.txt
    
    psftp.exe -b script.txt ...
    

    但请注意,%DATE% 并不是一种真正可靠的方法来检索具有固定格式的时间戳,因为它的值会随语言环境而变化。

    您可以改用这个:

    for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set LDT=%%j
    ECHO get FILENAME_%LDT:~0,4%-%LDT:~4,2%-%LDT:~6,2%.TXT >> script.txt
    

    详情见:
    How to get current datetime on Windows command line, in a suitable format for using in a filename?


    或者使用批处理文件 (.bat) 中的 WinSCP scripting(本机支持时间戳),例如:

    winscp.com /log=winscp.log /command ^
        "open ftp://username:password@host" ^
        "cd /subdir" ^
        "get FILENAME_%%TIMESTAMP#yyyy-mm-dd%%.TXT" ^
        "exit"
    

    详情见:

    (我是 WinSCP 的作者)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      • 2022-06-30
      • 1970-01-01
      • 2011-02-10
      • 2012-01-26
      • 2015-07-24
      • 1970-01-01
      相关资源
      最近更新 更多