【问题标题】:FTP directory Upload [closed]FTP目录上传[关闭]
【发布时间】:2015-04-30 23:05:51
【问题描述】:

我会尽量让这件事变得简单快捷。如果您无法 100% 确定如何搜索某事物,可能很难搜索该信息。

所以我创建了一个小批量脚本来执行 powershell ftp 访问并让我登录以及所有有趣的东西。

基本上,当我需要心跳时,将文件上传到我的 FTP 服务器是一项 cron 工作。

我有 HOME 服务器,并且定期或在被告知时,我希望我的脚本能够执行并能够将目录从我的 HOME 服务器上传到 REMOTE ftp 服务器。

这是我正在使用的脚本。

@echo off<br>
echo user yourusername> ftpcmd.dat<br>
echo yourpassword>> ftpcmd.dat<br>
echo bin>> ftpcmd.dat<br>
echo cd \folder>> ftpcmd.dat<br>
echo put %1>> ftpcmd.dat<br>
ftp -n -s:ftpcmd.dat yourservername<br>

所以我收集了 put %1 = filetoupload

so filename.bat (the script) filetoupload = put %1 但它给了我错误提示

说:so Put I:\Documents 返回:打开本地文件出错 I:\Documents

FTP 服务器上的本地?或我的 HOME 服务器上的本地。

如何制作,以便我可以将所选目录从我的 HOME 服务器上传到 FTP REMOTE 服务器,而不是一个一个地上传文件???

真诚的感谢

【问题讨论】:

  • 使用for循环,遍历给定目录中的所有文件。
  • 请解释一下?因为似乎大多数终端命令都是针对给定文件的,而不是通常针对目录的。以及如何执行 For 循环来扫描整个目录,上传目录中的每个文件,而无需手动输入
  • 请将您的问题移至Super User。这里是题外话。

标签: batch-file file-upload ftp server remote-access


【解决方案1】:

我假设%1 这里指的是通过 FTP 上传的目录。您可以改为使用批处理 for 函数/关键字来添加许多 put 指令,对应于您上传目录中的文件。

例如:

@echo off

echo user yourusername> ftpcmd.dat
echo yourpassword>> ftpcmd.dat
echo bin>> ftpcmd.dat
echo cd \folder>> ftpcmd.dat

for %%f in (%1\*.*) do echo put "%%f">> ftpcmd.dat

ftp -n -s:ftpcmd.dat yourservername

对于递归版本:

@echo off

echo user yourusername> ftpcmd.dat
echo yourpassword>> ftpcmd.dat
echo bin>> ftpcmd.dat
echo cd \folder>> ftpcmd.dat

for /R %1 %%f in (*.*) do echo put "%%f">> ftpcmd.dat

ftp -n -s:ftpcmd.dat yourservername

【讨论】:

  • 嗯。那非常非常有趣。学习一些好的 ol 批处理脚本 :P :P 所以这个命令比你有
    > ftpcmd.dat
    所以如果我有一个目录名称 Documents 并且我想要该文件夹/文件夹中的所有子目录或文件上传到 FTP 服务器。
    for 命令将为我做到这一点.. 我所要做的就是运行 filename.bat 来执行它,它会自动从目录中抓取文件并在没有用户输入的情况下上传它们?
    非常感谢。
  • @ChrisMccafferty 我并不完全精通批处理脚本,但似乎this 的答案在这里显示了它可以进行递归目录处理。我将尝试修改现有答案以包括递归目录处理。
  • 非常感谢。嘿,不管你知道多少废话或一无所知,最终都会积累很多知识。我想知道是否有其他人或您能够解释为什么无论我做什么,我总是说“打开本地目录(目录)时出错,当文件可以从我的家庭服务器访问并且文件所在的硬盘已打开时??? 那么为什么会出现错误?如果人们不只是发布他们的脚本并期望您了解它的所有内容,那也很好。为什么不做一下命令或代码行正在做什么的旁注???? ??????
  • @ChrisMccafferty 也许您指定的是目录而不是文件?我以前从未使用过ftp 程序,所以我不知道。我添加了递归版本,这个page 应该会给你一些关于如何批量使用 for 结构的不错的文档。
  • 非常非常非常感谢。递归似乎并不像我们都认为的那样工作。它几乎只是在不断循环中发送脚本..实际上什么也没做..看起来就是这样。