批处理文件将文件上传到网站

批处理文件将文件上传到网站

我已经尝试了好几天将单个文件上传到我网站的目录:我知道我可以使用 Filezilla,但我想为一些非技术人员自动完成此操作。只需单击运行批处理文件的图标即可。听起来很简单。我寻找过可以插入参数的示例,但似乎没有任何效果。(下面的代码)

FTP OPEN 72.167.xxx.xx
user Sunshine45
password Thunder34
cd /nwire/wp-contect/uploads/2015/01
put /Les/block7.jpg
Bye

我知道这肯定是显而易见的,但我就是没看到。我想将 block7.jpg 从我电脑上的目录插入到网站目录中。最终结果是自动更新网站上的图像。

感谢您的任何建议和/或帮助。

答案1

Jesper 的回答展示了如何以最接近问题写作方式的方式来做到这一点。

我建议另一个解决方案:不要使用 ftp。FTP 不会在网络上提供安全性。在某些网络设计中,它还可能存在问题,特别是在使用 NAT 或使用防火墙的情况下。如果手动 FTP 上传工作正常,这些问题现在可能不存在,但如果有人进行更改,这些问题可能会开始存在。例如,如果您用另一个提供不同功能的 DSL 调制解调器替换 DSL 调制解调器,可能会出现问题。

首选解决方案是不使用 FTP。根据 Web 主机提供的选项,您可以使用的替代方法可能有限。一个很好的替代方案是使用 PuTTY 的 PSFTP.EXE 实现的 SFTP。由于 FTP 有多种安全变体(如 FTPS),因此可能会存在一些歧义。使用 PuTTY 的 PSCP 实现的 SCP 在某些情况下可能更容易使用,因此我建议从它开始。

为此,首先从 PuTTY 的下载站点获取文件。 http://chiark.greenend.org.uk/~sgtatham/putty/download.html提供 pscp.exe 和类似的 psftp.exe 文件。the.earth.li/~sgtatham/putty/latest/x86/…(适用于 0.63 版,这是撰写本文时的最新版本)对于喜欢使用 GUI 完成简单安装过程的人来说可能是最简单的,而 putty.zip 文件还包含 putty.exe、pscp.exe 和 psftp.exe

批处理文件的第一个版本将如下所示:

C:\Program Files\PuTTY\PSCP.exe -l 用户名 C:\dir\stuff\to\upload*.* remoteSever:.

请注意末尾的句点,它指定了文件存放的位置。请根据需要自定义。

一旦运行良好,您将需要反对用户需要输入密码。是的,好吧,这可以解决,但这只是多一点工作,但通常是支持使用 PSFTP 或 PSCP 的服务器的选择。您可能想要使用 PuTTYGen 来创建密钥。以 OpenSSH 格式(而不是 PuTTYGen 首选的 *.PPK 格式)保存私钥。该私钥需要进入服务器。使用 PuTTY 可能是一种更简单的工具,可以确保私钥安装在需要的位置。处理私钥后,可以修改批处理文件以使用:

C:\Program Files\PuTTY\PSCP.exe -l 用户名 -i C:\mykeys\mykey.pub C:\dir\stuff\to\upload*.* remoteSever:.

如果 PSCP 运行良好,请尝试使用 PSFTP.exe 稍微现代化一些。如果可行,那就更好了,因为 OpenSSH 作者指出 SFTP 是一种比 SCP 更发达的协议。

替代方案是使用 FTP、SFTP 或 SCP 以外的协议,例如 HTTP(S)。HTTP(S) 可能可以通过使用 WGET 和 --post-file=filename 来自动化,但您需要找出您的网络主机使用哪个 URL 来允许 HTTP 上传。实际上,cURL 比 WGET 更可取。它有更宽松的许可证,而且我相信代码也更新更简单。

可能还有其他可用的实现。WinSCP 支持名为 winscp.com 的命令行客户端(还有提供 GUI 的 winscp.exe)。Windows Script Host 可以通过使用内置于 Microsoft Windows 的对象来使用 HTTP,因此无需下载可执行文件。再次,我引用 Jesper 的答案,您可能会发现它对您来说非常有效,并且它使用的软件通常预装在 Windows 中,因此无需下载额外的软件。我敢打赌还有更多可用的选项……您有很多选择可供选择。

答案2

具体操作如下:

将这些命令放在单独的文件中;我们将其命名为ftpcommands.txt

OPEN 72.167.xxx.xx
user Sunshine45
password Thunder34
cd /nwire/wp-contect/uploads/2015/01
put /Les/block7.jpg
Bye

然后这个命令应该可以解决问题(至少在 Windows 上):

FTP -s ftpcommands.txt

顺便说一句:如果你在这里公开了真实的用户名和密码,我建议你现在就更改。你提供的其他信息足以找到完整的 IP 地址。

相关内容