【问题标题】:Not able to upload/download files via FTP script无法通过 FTP 脚本上传/下载文件
【发布时间】:2015-06-19 09:27:30
【问题描述】:

我有以下批处理文件,它创建一个 FTP 脚本来从服务器上传/下载文件。

但是我以管理员权限运行它,但脚本只上传一个文件并且没有下载任何想法?

@echo off

echo user a6954408 >>ftpcmd.dat
echo renu123 >>ftpcmd.dat 
ECHO cd /public_html/ >>ftpcmd.dat
echo bin >>ftpcmd.dat
lcd C:\Users\User\AppData\Local\Temp >>ftpcmd.dat
echo get Auto_Update.exe >>ftpcmd.dat
echo get Log.txt >>ftpcmd.dat
echo put C:\Users\User\AppData\Local\Temp\Log.txt >>ftpcmd.dat

echo put C:\Users\User\AppData\Local\Temp\Dev.txt >>ftpcmd.dat

echo quit >>ftpcmd.dat


ftp -n -s:ftpcmd.dat chatterz.net78.net 


goto :run1
:run1
ftp -n -s:ftpcmd.dat chatterz.net78.net 


goto run1

更新:2015 年 6 月 19 日,16:05

感谢您的帮助,但我仍然没有得到它..

Connected to chatterz.net78.net.
220---------- Welcome to Pure-FTPd [privsep] ----------
220-You are user number 12 of 500 allowed.
220-Local time is now 06:32. Server port: 21.
220-This is a private system - No anonymous login
220 You will be disconnected after 3 minutes of inactivity.
ftp> user a6954408
331 User a6954408 OK. Password required

230-OK. Current restricted directory is /
230-2 files used (0%) - authorized: 10000 files
230 6040 Kbytes used (0%) - authorized: 1536000 Kb
ftp> cd public_html
250 OK. Current directory is /public_html
ftp> bin
200 TYPE is now 8-bit binary
ftp> lcd C:\Users\User\AppData\Local\Temp
Local directory now C:\Users\User\AppData\Local\Temp.
ftp> get Auto_Update.exe
200 PORT command successful
550 Can't open Auto_Update.exe: No such file or directory
ftp> get Log.txt
200 PORT command successful
150 Connecting to port 53985
226 File successfully transferred
ftp> put Log.txt
200 PORT command successful
150 Connecting to port 53986
226 File successfully transferred
ftp> put Dev.txt
Dev.txt: File not found
ftp> quit
221-Goodbye. You uploaded 0 and downloaded 0 kbytes.
221 Logout.
Press any key to continue . . .

这些文件仍然没有被上传/下载任何想法我该怎么办?

【问题讨论】:

  • 曾经遇到过类似的问题。就我而言,问题是大多数公共 FTP 服务器都需要被动模式。检查您的服务器是否这样做。如果是这种情况,您可以尝试将QUOTE PASV 添加到您的代码中。
  • 向我们展示脚本的输出。
  • 你好迈克尔,感谢你的帮助我已经在我的代码中添加了引号 pasv,但它似乎仍然不起作用......你能试着举一个例子,这样我就可以检查我是否没有做错吗?谢谢
  • QUOTE PASV 无能为力。它将服务器切换到被动模式,但ftp.exe 不支持被动模式,因此全部中断。
  • 您好 Martin,感谢您的帮助,但我的 lightshot 无法正常工作,因此我已使用服务器链接和密码更新了程序,请检查上面的代码。谢谢

标签: batch-file download upload ftp


【解决方案1】:

您的代码通常是正确的。

有两个问题,没有一个可能是您的问题的原因:

  • echo renu123 >>ftpcmd.dat - 您不应该在密码后面留下空格,因为它被用作密码的一部分。
  • lcd C:\Users\User\AppData\Local\Temp >>ftpcmd.dat - 在lcd 之前缺少echo

当我运行你的代码时,它无法下载Auto_Update.exe,因为该文件在服务器上不存在:

ftp> get Auto_Update.exe
200 PORT command successful
550 Can't open Auto_Update.exe: No such file or directory

两个文件都已上传(如果我的本地计算机上有它们)。所以如果他们没有上传到你的机器上,那是因为你没有他们在那个路径中。

根据您的输出日志,Log.txt 已上传,但 Dev.txt 未上传,因为它不存在。


所以我认为没有什么可以帮助你的。只需确保您正在下载和上传的文件确实存在即可。

【讨论】:

  • 可能是因为路径的原因找不到?也许更好地使用%TEMP% 而不是硬编码路径。
  • @Stephan 使用%TEMP% 肯定更好,但我希望OP 使用正确的路径。
  • 好吧 - 他添加了他的凭据。我怀疑他的用户名是user。也许他错过了将其更改回他的实际用户名进行测试..
  • 谢谢大家的帮助,但它仍然无法正常工作,任何人可以更新代码并在这里发布吗?谢谢
  • 代码正确。这是不存在的文件!您希望我们提供什么帮助?你相信它们确实存在吗?
【解决方案2】:

(应该是注释,但不可读)

这是给定 ftp 服务器的目录:

ftp> dir
200 PORT command successful
150 Connecting to port 59225
drwxr-x---    2 a6954408   a6954408         4096 Jun 19 04:37 .
drwx--x--x    3 a6954408   a6954408         4096 Jun 19 07:06 ..
-rw-r--r--    1 a6954408   a6954408           91 Jun 13 11:29 .htaccess
-rw-r--r--    1 a6954408   a6954408        53760 Jun 17 07:37 Chatterz.exe
-rw-r--r--    1 a6954408   a6954408           24 Jun 19 07:15 Dev.txt
-rw----r-x    1 a6954408   a6954408          226 Jun 19 07:39 Log.txt
-rw-r--r--    1 a6954408   a6954408            3 Jun 17 03:32 Test.txt
226-Options: -a -l
226 7 matches total
FTP: 497 Bytes empfangen in 0.06Sekunden 8.28KB/s

当然,下载Auto_Update.exe 会失败。它根本不存在。 你的日志是这样写的:

550 Can't open Auto_Update.exe: No such file or directory

【讨论】: