【问题标题】:Rename a file on the remote FTP host to the output of a command (Windows)将远程 FTP 主机上的文件重命名为命令的输出 (Windows)
【发布时间】:2016-10-20 00:55:55
【问题描述】:

我正在使用cmd.exe(在 Windows 7 上)连接到我网站的 FTP 服务器。但是,当我想重命名远程主机上的文件时,我只能将其重命名为静态文本(第一个单词,如果有多个单词以空格分隔)

我想要做的是将文件重命名为命令的输出(动态)。例如命令date的输出是

当前日期是:2016 年 6 月 18 日星期六

我希望文件名是date 命令的结果。

提前致谢!

【问题讨论】:

    标签: windows batch-file cmd ftp


    【解决方案1】:

    collecting the command output to a variable开始。

    然后,使用该变量即时生成ftp.exe 脚本。

    FOR /F "tokens=* USEBACKQ" %%F IN (`date /t`) DO (
      SET OUTPUT=%%F
    )
    
    echo open ftp.example.com>ftp.txt
    echo user>>ftp.txt
    echo password>>ftp.txt
    echo rename current_name %OUTPUT%>>ftp.txt
    echo bye>>ftp.txt
    
    ftp -s:ftp.txt
    

    【讨论】:

    • 谢谢,它起作用了,但是当它重命名文件时,我只得到结果的第一个单词(在第一个 空格 之前)(例如:日期是 19/ 06 -> 的)。我尝试删除空格并仅从变量中获取数字并将它们添加到新变量中,然后发送请求,但失败了。有什么想法吗?
    • 编辑:解决了。以错误的方式使用替换字符命令..现在我可以删除空格并且文件名将成为一部分。如果您知道如何使用空格上传,那就太棒了!如果你不这样做,没问题。再次感谢,这比我想要的帮助很多。
    • date /t 不应打印“日期为”前缀。无论如何,只需将名称用双引号括起来,例如 echo rename current_name "%OUTPUT%">>ftp.txt
    • 那行得通..奇怪的是我如何尝试同样的事情(添加双引号)但它没有工作,也许额外的代码正在制造麻烦..现在一切都按照我的意愿工作!谢谢马特林!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多