手机启动FTP服务之后,我们可以直接快速获取文件
第一步,创建bat
getFile.bat
-----------------------
start ftp -v -d -i -s:"myFtp.txt"
-----------------------
第二部,编写Ftp命令相关的txt文件
myFtp.txt
-----------------------
open 192.168.31.39 2121
myUser
myPassword
quote PASV
cd /DCIM/Camera
cd /tencent/MicroMsg/WeiXin
lcd C:\MyTool\getPhoneFile\myFile
binary
get IMG_20191120_110211.jpg
get mmexport1574219476053.jpg
get mmexport1574219468849.jpg
bye
-----------------------
open 10.10.10.193 2121
myUser
myPassword
quote PORT
quote PASV
rem cd /Android/data/com.tencent.mm/MicroMsg/Download
cd /1ftp
ls
lcd C:\userName\MyTool\getPhoneFile\myFile
binary
get "aiu.mp4"
■扩展 shell 使用
ftp -v -d -i << EOF
open 10.10.10.193 2121
sxz01
sxzpassword
quote PORT
quote PASV
cd /1ftp
ls
lcd C:\sxz\MyTool\getPhoneFile\myFile
binary
get "0816.xlsx"
bye
EOF
命令 << EOF
内容段
EOF
注意!!! 是linux的shell好用,windows的bat不适用
不过以上代码,可以使用git bash执行
===
在shell脚本中(bash编程),
<<EOF表示后续的输入作为子命令或子Shell的输入,
直到遇到EOF为止,再返回到主Shell。
而EOF可以换成任何其他字符都可以。
■备注1
quote PASV 的作用为,切换到被动连接方式
cd 跳转手机的目录
lcd 跳转本地目录
binary 以二进制方式传输,必须要这种方式传送图片
-----------------
ls 可以查看服务器端所有文件的名字
dir 可以查看服务器端所有文件的名字以及详细信息
小米9手机不支持通配符
500 NLST dose not support wildcards
(关于上面NLST的意思,我的猜想,是NameList的缩写)
■备注2
有点手机ftp服务不能设定密码,
这个时候,bat命令如下
-----------------------
start ftp -A -s:"myFtp.txt"
-----------------------
同时,txt文件中,也不必再包含用户和密码
■备注3
-g 使用ftp命令参数使用
glob 关闭通配符 进入ftp连接后使用
(小米9的手机,使用mget时,如果不关闭,不识别文件中的下划线,但是直接使用get命令,不存在这个问题)
(mget fileName1 fileName2)
(NLST for regular files is unsupported)
-i
prompt 关闭交互模式
(使用mget时,如果不关闭,每次都会有询问)
(mget fileName1 fileName2)
-v
verbose 开关详细模式
status 查看当前ftp连接设定的相关状态
help帮助
进入ftp之前,查看参数的使用方法 ftp /?
■遇到的问题与解决
问题:乱码
解决:在手机端选择传输模式(GBK)
客户端(电脑侧)命令行窗口使用 chcp 65001 切换为 UTF-8,没有效果。
问题:文件名带有空格
解决:加上双引号。(注:单引号不好用)
get "测试 文件.xlsx"