批处理文件中WinSCP命令行上的%TIMESTAMP%语法不起作用

时间:2018-02-21 07:07:58

标签: batch-file sftp winscp

我正在尝试创建一个脚本,通过SFTP将文件从本地Windows文件夹传输到unix环境。我对代码稍作修改(FX%timestamp%.txt) 这样,要发送的文件名等于今天的日期。

当我将这些命令复制到命令提示符时,代码已经有效。 结果:文件从c:\upload复制到opt/dev/public_html/TEST/aperture/public/fx_rates

"C:\Program Files\WinSCP\WinSCP.com" ^
  /command ^
    "open sftp://ApertureUATusr:kiakit04@10.19.20.193/ -hostkey=""ssh-ed25519 256 f1:bd:8f:ad:ae:6f:93:a9:e5:ae:79:64:03:49:0a:09""" ^
    "lcd C:\upload" ^
    "cd /opt/dev/public_html/TEST/aperture/public/fx_rates" ^
    "put -transfer=ascii -permissions=0777 FX%TIMESTAMP#yyyymmdd%.txt" ^
    "exit"

问题是此代码不能作为.BAT文件运行。我设法在运行batfile时获取屏幕截图,当我检查错误时,系统将其读作FX.txt而不是FX20180221.txt enter image description here

1 个答案:

答案 0 :(得分:1)

documentation for the WinSCP %TIMESTAMP% syntax中所述:

  

要在批处理文件中的命令行上使用%TIMESTAMP%,您需要将%转义为%%TIMESTAMP%%两倍,以避免批处理文件解释程序尝试解析变量

所以你需要这个:

    "put -transfer=ascii -permissions=0777 FX%%TIMESTAMP#yyyymmdd%%.txt" ^