【问题标题】:Batch file to move files from one FTP folder to another folder in the same FTP?批处理文件将文件从一个 FTP 文件夹移动到同一个 FTP 中的另一个文件夹?
【发布时间】:2018-03-28 13:23:17
【问题描述】:

大家早上好,

我有一个任务,我需要自动化一个过程,我们从 FTP 站点下载文件,在 SQL 中处理文件,然后将 FTP 站点上的文件移动到同一个 FTP 站点上的另一个文件夹。

前两个部分我已经失败了,但是将 FTP 上的文件移动到同一个 FTP 上的另一个文件夹的部分让我很不爽。

谁能给点建议?

这是我目前拥有的:

@Echo Off
Set _FTPServerName=SERVER HERE
Set _UserName=LOGIN HERE
Set _Password=PASSWORD HERE
Set _RemoteFolder=FILES FROM
Set _NewRemoteFolder=FILES TO
Set _Filename=*.*
Set _ScriptFile=ftp1

:: Create script
"%_ScriptFile%" Echo open %_FTPServerName%
"%_ScriptFile%" Echo %_UserName%
"%_ScriptFile%" Echo %_Password%
"%_ScriptFile%" Echo cd %_RemoteFolder%
"%_ScriptFile%" prompt

:: Run script
ftp -s:"%_ScriptFile%"
Del "%_ScriptFile%"

如果您还有其他问题,请告诉我!

【问题讨论】:

  • 你的客户端的操作系统和FTP主机的操作系统是什么?
  • @lit 客户端是Windows 10,FTP主机是Windows Server 2012
  • 没有移动命令。您需要下载文件,然后将它们上传到另一个文件夹。
  • @squashman 这就是我害怕的!感谢您的确认:)
  • 不认为您可以使用 FTP 中的 RENAME 命令将文件移动到另一个目录,但显然您可以。 stackoverflow.com/questions/9461844/…

标签: file batch-file cmd ftp transfer


【解决方案1】:

Windows 中有rename commandftp.exe 命令行客户端:

rename oldname newname

所以在你的特定批处理文件中:

"%_ScriptFile%" echo rename file.txt %_NewRemoteFolder%/file.txt

虽然在您的问题中看到_Filename=*.*,但实际上您似乎想要移动所有文件。这在 Windows ftp.exe 中是不可能的,至少不容易。 rename 命令不支持通配符。

您必须根据下载文件列表动态生成脚本文件,并为每个文件使用单独的rename 命令。


或者在重命名/移动时使用支持通配符的不同命令行 FTP 客户端。

例如使用WinSCP scripting,批处理文件将是:

winscp.com /log=winscp.log /command ^
    "open ftp://username:password@example.com" ^
    "cd %_RemoteFolder%" ^
    "mv *.* %_NewRemoteFolder%/" ^
    "exit"

详情见:

(我是 WinSCP 的作者)

【讨论】:

  • 嘿@Martin Prikryl 非常感谢您的回复!我只是想说我使用你的另一篇文章使用 WinSCP 来帮助我正在测试的另一件事,这是惊人的,非常感谢!
【解决方案2】:

处理此问题的最直接方法是使用 PowerShell。这将使文件复制发生在 FTP 主机上,而无需在将数据写回服务器之前到达您的客户端。

Invoke-Command -ComputerName FTPHOST -ScriptBlock { Move-Item -Path C:\dir1\thefile.txt -Destination C:\dir2\thefile.txt }

您可以从 cmd.exe shell 运行它。

powershell -NoProfile -Command "Invoke-Command -ComputerName FTPHOST -ScriptBlock { Move-Item -Path C:\dir1\thefile.txt -Destination C:\dir2\thefile.txt }"

【讨论】:

  • 嘿@lit 非常感谢您的回复。您知道 PowerShell 是预装的还是需要安装和配置的?
  • 另外,您提供的代码是否可以在批处理文件中执行?
  • 我相信 PowerShell 预装在 Windows 10 和 Server 2012 上。您可能需要配置 PowerShell 远程处理。
  • 这是如何连接到服务器上的FTP服务的?认证去哪里了?
  • 这个答案没有回答问题。问题是关于 FTP 的。答案是关于使用 Windows PowerShell 的远程访问。这是两种完全不相关的技术。我知道它对 OP 有所帮助,但这并不能使答案有效。答案至少应该提到,它使用了 OP 要求的不同技术。
猜你喜欢
  • 2016-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多