Board logo

标题: [网络连接] [已解决]BAT-无法登陆FTP [打印本页]

作者: chuyizhou    时间: 2014-1-20 08:58     标题: [已解决]BAT-无法登陆FTP

本帖最后由 chuyizhou 于 2014-1-21 13:01 编辑

大家好,最近新学习批处理,解决了很多问题。可是登陆ftp的问题一直没有找到答案,查了很多资料和帖子,发现大部分都是用下面这段代码登陆的(注:192.168.1.101只是个例子):
  1. @echo off
  2. (
  3.     echo OPEN 192.168.1.101
  4.     echo user
  5.     echo 123456
  6.     echo CD \
  7.     echo PUT "%~1"
  8.     echo BYE
  9. )>1.FTP
  10. FTP -S:1.FTP
复制代码
我在这里有几个问题:
1. open是专门用来进入ftp的命令吗?我在cmd里面输入open 192.168.1.101根本不行,说open不是internal or external的命令,只能用ftp 192.168.1.101。但用了ftp代替open写入上面的代码也行不通。
2. 如果用ftp登陆的话我又不知道怎么指定port,我想ftp /?查用法cmd却说“Unknown host /?“。。。请问怎么去写才好?

我的目的其实很简单,就只要test这个ftp能不能进就行了,或者进去之后在默认的初目录下面dir看看有没有一个test.txt的文件。

顺便问一下,类似 ftp.abcd.com的是不是和192.168.1.101这样的是同一种方式进入的阿?

希望有大神可以帮我解惑!谢谢!
作者: DAIC    时间: 2014-1-20 09:37

open是专门用来进入ftp的命令吗?

open是FTP内部命令,不能直接在CMD里面执行,试试这样:
开始
运行
cmd
ftp
open 192.168.1.101
作者: chuyizhou    时间: 2014-1-20 10:24

回复 2# DAIC


    行得通!请问在那里可以指定端口啊?
还有我把代码第6、7行改成echo dir *.txt 之后运行发现黑框闪了一下就消失了,怎么回事啊?
作者: DAIC    时间: 2014-1-20 10:40

回复 3# chuyizhou


把端口放在IP后面
  1. open 192.168.1.101 12345
复制代码

作者: chuyizhou    时间: 2014-1-20 10:58

回复 4# DAIC
  1. @echo off
  2. (
  3.     echo OPEN 192.168.1.101 21
  4.     echo user
  5.     echo 12345
  6.     echo cd /pub
  7.     echo pwd
  8.     echo BYE
  9. )>1.FTP
  10. FTP -S:1.FTP
复制代码
请问我这个运行之后就只会黑框闪烁一下就不见,是什么情况阿?直接在cmd里面一行行敲是成功的呢……
作者: DAIC    时间: 2014-1-20 11:07

回复 5# chuyizhou


你加一个put或者get文件的操作吧
作者: chuyizhou    时间: 2014-1-20 12:19

回复 6# DAIC


    我试了一下,用dir也有output了 可是奇怪的是我运行第二遍的时候竟然只有黑框,没有任何output了。。。我加了pause但也没有press any key to continue...出现。。。
作者: DAIC    时间: 2014-1-20 12:30

回复 7# chuyizhou


不要把批处理命名为ftp.bat
试试test.bat
作者: chuyizhou    时间: 2014-1-20 13:12

回复 8# DAIC


    不可思议!之前确实是test.bat运行的,成功了之后我rename为ftp.bat的。太感谢了。。。这样我已经可以成功测试公司的4个ftp server了。

容我试试看能不能以同样的方式测试有ssh认证的几个sftp server。
作者: DAIC    时间: 2014-1-20 13:30

回复 9# chuyizhou


    sftp不支持这种方法输入用户名和密码
作者: chuyizhou    时间: 2014-1-20 14:24

回复 10# DAIC


    是的,并不支持。。。出现了下面的提示:
ftp> open 192.168.1.101 22
Connected to 192.168.1.101.
SSH-2.0-OpenSSH_5.2


请问有方法用批处理登陆吗?
作者: DAIC    时间: 2014-1-20 14:52

回复 11# chuyizhou


    用VBS模拟键盘输入用户名和密码
作者: chuyizhou    时间: 2014-1-21 09:05

回复 12# DAIC


    花了点时间查这个东西,新接触,完全没有意识……这个模拟键盘就是一串事先设置好将要输入的按键的代码是把?我应该把这段代码放在哪个地方去辅助批处理文件进入sftp服务器呢?

比如我要输入密码12345,那我就要

Set objShell = CreateObject("Wscript.Shell")
strCommandLine = "test.bat"        '
objShell.Run(strCommandLine)
set WshShell = CreateObject("WScript.Shell")
WScript.Sleep 3000        '延时3秒
WshShell.SendKeys "1"        '模拟按下 S 键开始安装
WScript.Sleep 300        '延时0.3秒
WshShell.SendKeys "2"
WScript.Sleep 300
WshShell.SendKeys "3"        
WScript.Sleep 300      
WshShell.SendKeys "4"        
WScript.Sleep 300        
WshShell.SendKeys "5"        
WScript.Sleep 300        
WshShell.SendKeys "6"      
WScript.Sleep 300  
WshShell.SendKeys "Enter"
........

请问这个vbs虚拟键盘是怎么用的阿?
作者: chuyizhou    时间: 2014-1-21 09:23

回复 12# DAIC


    成功了!

我在test.bat里面写了set /p a=然后再用双击.vbs调用这个bat文件同时sendKey 123456abcdefg,真的出来了!

让我再研究研究 能不能放到登陆sftp的服务器。

我这儿其实有个疑问,我再cmd.exe里面手动登陆我们公司的sftp server的时候会提示下面这个东西,然后就没有然后了,真的可以用虚拟键盘登陆吗?
G:\>ftp
ftp> open sftp.abcd.com 99
Connected to sftp.abcd.com.
SSH-2.0-OpenSSH_5.2
作者: DAIC    时间: 2014-1-21 09:48

回复 14# chuyizhou


    试试看吧
作者: chuyizhou    时间: 2014-1-21 13:01

回复 15# DAIC


    谢谢你,还是不能登陆。因为手动登陆都不行。问了开发,说因为是不同的协议,用cmd命令行是无法登陆的,所以我准备另起一个帖子问问看有没有什么方法,能在不安装软件插件的前提下用batch来登陆。

谢谢你的指导,受益匪浅阿!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2