我已经尝试了好几天将单个文件上传到我网站的目录:我知道我可以使用 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 地址。