【问题标题】:Batch script to rename file with timestamp on FTP server after upload上传后在 FTP 服务器上使用时间戳重命名文件的批处理脚本
【发布时间】:2017-05-18 19:47:36
【问题描述】:

我在一个批处理文件中有这个脚本,它将本地文件上传到我们的 FTP 服务器。我需要重命名myfile.csv 以这种格式YYYYMMDDHHMM 为日期和时间添加后缀,例如myfile_201701041333.csv。如何才能做到这一点?

@Echo Off
Set _FTPServerName=myserver
Set _UserName=myusername
Set _Password=mypassword
Set _LocalFolder=\\data\myfolder
Set _RemoteFolder=e-download
Set _Filename=myfile.csv
Set _ScriptFile=ftp1
:: Create script
 >"%_ScriptFile%" Echo open %_FTPServerName%
>>"%_ScriptFile%" Echo %_UserName%
>>"%_ScriptFile%" Echo %_Password%
>>"%_ScriptFile%" Echo lcd %_LocalFolder%
>>"%_ScriptFile%" Echo cd %_RemoteFolder%
>>"%_ScriptFile%" Echo binary
>>"%_ScriptFile%" Echo put %_Filename%
>>"%_ScriptFile%" Echo quit
:: Run script
ftp -s:"%_ScriptFile%"
Del "%_ScriptFile%"

【问题讨论】:

  • ...只是旁注:您可以将所有 echo 命令放在带括号的块 ( ) 内,并通过 > "%_ScriptFile%" 重定向整个块一次...
  • 谢谢大家,整理好工作。 stackoverflow.com/questions/864718/… 获取所需的日期代码。

标签: batch-file ftp


【解决方案1】:

put 命令接受可选的第二个参数来指定目标名称:

put localfile remotefile

在您的批处理文件中:

>>"%_ScriptFile%" Echo put %_Filename% %_Remotename%

要将 %_Remotename% 设置为带时间戳的名称,请参阅
Format date and time in a Windows batch script – 首选基于 wmic 或 PowerShell 的解决方案,因为基于 %date% 的解决方案与区域无关。


使用一些更高级的 FTP 客户端,您的任务会更轻松。

例如使用WinSCP FTP client,就像这样简单:

@Echo Off
Set _FTPServerName=myserver
Set _UserName=myusername
Set _Password=mypassword
Set _LocalFolder=\\data\myfolder
Set _RemoteFolder=e-download
Set _Filename=myfile.csv

winscp.com /ini=nul /command ^
    "open ftp://%_UserName%:%_Password%@%_FTPServerName%/" ^
    "put ""%_LocalFolder%\%_Filename%"" ""%_RemoteFolder%/myfile_%%TIMESTAMP#yyyymmddhhnn%%.csv""" ^
    "exit"

参考资料:

(我是WinSCP的作者)

【讨论】:

    【解决方案2】:

    使用命令wmic os get localdatetime /value,您可以获得几乎直接满足您需求的输出。现在使用一些额外的代码,您可以将其修剪到最合适的位置:

    @echo off
    setlocal EnableDelayedExpansion
    for /f "delims=.= tokens=2" %%n in ('wmic os get localdatetime /value') do (
    set var=%%n
    set var=!var:~0,-2!
    )
    echo %var%
    

    对于上面命令中的每个输出,取=. 之间的文本。将该文本保存到变量 var,修剪最后 2 个字符以删除秒数。

    现在您可以执行以下操作:

    ren myfile.csv myfile_%var%.csv
    

    重命名。

    【讨论】:

      猜你喜欢
      • 2014-11-01
      • 2023-03-09
      • 2018-07-27
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      • 2014-12-17
      • 1970-01-01
      • 2010-09-20
      相关资源
      最近更新 更多