如何在 PuTTY/PSFTP 批处理脚本中使用日期变量?
How to use date variables in PuTTY/PSFTP batch-script?
我喜欢在 PuTTY/PSFTP 批处理脚本中使用日期变量来 select 文件名中带有特定时间戳的文件。
但我在 docs 中找不到任何内容。 PuTTY/PSFTP batch-script 是否有使用 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
您必须像这样动态生成 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的作者)
我喜欢在 PuTTY/PSFTP 批处理脚本中使用日期变量来 select 文件名中带有特定时间戳的文件。
但我在 docs 中找不到任何内容。 PuTTY/PSFTP batch-script 是否有使用 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
您必须像这样动态生成 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的作者)