网站模板库
  • 首页
  • web前端工具
    • HTML/JS转换工具
    • JS/HTML格式化工具
    • 字母/英文大小写转换工具
    • robots.txt文件生成工具
    • Js压缩/格式化工具
    • Css在线压缩工具_代码格式化
  • 关于我们
    • 免责声明
    • 联系我们
    • 广告服务
    • 服务项目
    • 关于我们
    • 网站轮播
    • 公告
    • 成都优优科技专用
    • 按行业分类
  • web学院
    • 服务器教程
    • 学习资料
      • 基础书籍
      • 交互书籍
      • 入门教程
      • 特效分类
    • 案例分享
    • web资讯
  • 网页特效
    • 图片特效
    • 导航特效
    • 滑动按钮
    • 表单特效
    • 文字特效
    • 弹窗特效
    • 其他特效
  • 织梦模板
    • 科技/电子/数码/通信
    • 文化/艺术/广告/传媒
    • 装修/设计/家居/家具
    • 基建/施工/地产/物业
    • 餐饮/酒店/旅游/票务
    • 食品/果蔬/饮料/日用
    • 服饰/珠宝/礼品/玩具
    • 摄影/婚庆/家政/生活
    • 运动/健身/体育/器材
    • 学校/教育/培训/科研
    • 美容/保健/医院/医疗
    • 金融/财税/咨询/法律
    • 政府/组织/集团/协会
    • 汽车/物流/交通/搬运
    • 机械/设备/制造/仪器
    • 化工/环保/能源/材料
    • 农业/畜牧/养殖/宠物
    • 其他模版
    • IT/软件/信息/互联网
  • 手机模板
    • 手机APP模板
    • 微信小程序模板
    • wap
  • 网站模板
    • joomla模板
    • Drupal模板
    • z-blog模板
    • EyouCms模板
    • Bootstrap模板
    • 帝国cms模板
    • CmsEasy模板
    • MetInfo模板
    • 购物商城模板
      • Shopify主题
      • PrestaShop主题
    • 后台模板
    • 纯HTML模板
    • ecshop模板
    • phpwind模板
    • pbootcms模板
    • phpcms模板
    • wordpress模板
    • discuz模板
  • 教程
    • 织梦教程
    • Discuz教程
    • WordPress教程
    • Phpcms教程
    • Phpwind教程
    • ECShop教程
    • Joomla教程
    • Drupal教程
    • zblog教程
    • EyouCMS教程
    • 帝国cms教程
    • MetInfo教程
    • CmsEasy教程
登录
当前位置:网站模板库 > web学院 > 服务器教程 > 用bat批处理命令获取ftp服务器目录下的文件名及子目录下的文件名...各位大神帮帮忙
商业源码 服务器教程 2024-02-02 12:12:01

用bat批处理命令获取ftp服务器目录下的文件名及子目录下的文件名...各位大神帮帮忙

用bat批处理命令获取ftp服务器目录下的文件名及子目录下的文件名...各位大神帮帮忙,第1张

@echo off

set h=1921681100

set u=ftpuser

set p=12345678

echo open %h%>ftptxt

echo %u%>>ftptxt

echo %p%>>ftptxt

echo dir>>ftptxt

echo bye>>ftptxt

ftp -s:ftptxt>ftpdirtxt

echo open %h%>ftptxt

echo %u%>>ftptxt

echo %p%>>ftptxt

for /f "tokens=4" %%i in ('findstr "<DIR>" ftpdirtxt') do (

echo cd %%~i>>ftptxt

echo dir>>ftptxt

echo cd >>ftptxt)

echo bye>>ftptxt

ftp -s:ftptxt>ftpfiletxt

notepad ftpfiletxt

拿去用吧。

package comweixinutil;

import javaioFile;

import javaioFileOutputStream;

import javaioIOException;

import javaioInputStream;

import javaioOutputStream;

import javaioPrintWriter;

import javaioRandomAccessFile;

import orgapachecommonsnetPrintCommandListener;

import orgapachecommonsnetftpFTP;

import orgapachecommonsnetftpFTPClient;

import orgapachecommonsnetftpFTPFile;

import orgapachecommonsnetftpFTPReply;

import comweixinconstantDownloadStatus;

import comweixinconstantUploadStatus;

/

  支持断点续传的FTP实用类

  @version 01 实现基本断点上传下载

  @version 02 实现上传下载进度汇报

  @version 03 实现中文目录创建及中文文件创建,添加对于中文的支持

 /

public class ContinueFTP {

public FTPClient ftpClient = new FTPClient();

public ContinueFTP(){

//设置将过程中使用到的命令输出到控制台

thisftpClientaddProtocolCommandListener(new PrintCommandListener(new PrintWriter(Systemout)));

}

/

  连接到FTP服务器

  @param hostname 主机名

  @param port 端口

  @param username 用户名

  @param password 密码

  @return 是否连接成功

  @throws IOException

 /

public boolean connect(String hostname,int port,String username,String password) throws IOException{

ftpClientconnect(hostname, port);

ftpClientsetControlEncoding("GBK");

if(FTPReplyisPositiveCompletion(ftpClientgetReplyCode())){

if(ftpClientlogin(username, password)){

return true;

}

}

disconnect();

return false;

}

/

  从FTP服务器上下载文件,支持断点续传,上传百分比汇报

  @param remote 远程文件路径

  @param local 本地文件路径

  @return 上传的状态

  @throws IOException

 /

public DownloadStatus download(String remote,String local) throws IOException{

//设置被动模式

ftpCliententerLocalPassiveMode();

//设置以二进制方式传输

ftpClientsetFileType(FTPBINARY_FILE_TYPE);

DownloadStatus result;

//检查远程文件是否存在

FTPFile[] files = ftpClientlistFiles(new String(remotegetBytes("GBK"),"iso-8859-1"));

if(fileslength != 1){

Systemoutprintln("远程文件不存在");

return DownloadStatusRemote_File_Noexist;

}

long lRemoteSize = files[0]getSize();

File f = new File(local);

//本地存在文件,进行断点下载

if(fexists()){

long localSize = flength();

//判断本地文件大小是否大于远程文件大小

if(localSize >= lRemoteSize){

Systemoutprintln("本地文件大于远程文件,下载中止");

return DownloadStatusLocal_Bigger_Remote;

}

//进行断点续传,并记录状态

FileOutputStream out = new FileOutputStream(f,true);

ftpClientsetRestartOffset(localSize);

InputStream in = ftpClientretrieveFileStream(new String(remotegetBytes("GBK"),"iso-8859-1"));

byte[] bytes = new byte[1024];

long step = lRemoteSize /100;

long process=localSize /step;

int c;

while((c = inread(bytes))!= -1){

outwrite(bytes,0,c);

localSize+=c;

long nowProcess = localSize /step;

if(nowProcess > process){

process = nowProcess;

if(process % 10 == 0)

Systemoutprintln("下载进度:"+process);

//TODO 更新文件下载进度,值存放在process变量中

}

}

inclose();

outclose();

boolean isDo = ftpClientcompletePendingCommand();

if(isDo){

result = DownloadStatusDownload_From_Break_Success;

}else {

result = DownloadStatusDownload_From_Break_Failed;

}

}else {

OutputStream out = new FileOutputStream(f);

InputStream in= ftpClientretrieveFileStream(new String(remotegetBytes("GBK"),"iso-8859-1"));

byte[] bytes = new byte[1024];

long step = lRemoteSize /100;

long process=0;

long localSize = 0L;

int c;

while((c = inread(bytes))!= -1){

outwrite(bytes, 0, c);

localSize+=c;

long nowProcess = localSize /step;

if(nowProcess > process){

process = nowProcess;

if(process % 10 == 0)

Systemoutprintln("下载进度:"+process);

//TODO 更新文件下载进度,值存放在process变量中

}

}

inclose();

outclose();

boolean upNewStatus = ftpClientcompletePendingCommand();

if(upNewStatus){

result = DownloadStatusDownload_New_Success;

}else {

result = DownloadStatusDownload_New_Failed;

}

}

return result;

}

/

  上传文件到FTP服务器,支持断点续传

  @param local 本地文件名称,绝对路径

  @param remote 远程文件路径,使用/home/directory1/subdirectory/fileext 按照Linux上的路径指定方式,支持多级目录嵌套,支持递归创建不存在的目录结构

  @return 上传结果

  @throws IOException

 /

public UploadStatus upload(String local,String remote) throws IOException{

//设置PassiveMode传输

ftpCliententerLocalPassiveMode();

//设置以二进制流的方式传输

ftpClientsetFileType(FTPBINARY_FILE_TYPE);

ftpClientsetControlEncoding("GBK");

UploadStatus result;

//对远程目录的处理

String remoteFileName = remote;

if(remotecontains("/")){

remoteFileName = remotesubstring(remotelastIndexOf("/")+1);

//创建服务器远程目录结构,创建失败直接返回

if(CreateDirecroty(remote, ftpClient)==UploadStatusCreate_Directory_Fail){

return UploadStatusCreate_Directory_Fail;

}

}

//检查远程是否存在文件

FTPFile[] files = ftpClientlistFiles(new String(remoteFileNamegetBytes("GBK"),"iso-8859-1"));

if(fileslength == 1){

long remoteSize = files[0]getSize();

File f = new File(local);

long localSize = flength();

if(remoteSize==localSize){

return UploadStatusFile_Exits;

}else if(remoteSize > localSize){

return UploadStatusRemote_Bigger_Local;

}

//尝试移动文件内读取指针,实现断点续传

result = uploadFile(remoteFileName, f, ftpClient, remoteSize);

//如果断点续传没有成功,则删除服务器上文件,重新上传

if(result == UploadStatusUpload_From_Break_Failed){

if(!ftpClientdeleteFile(remoteFileName)){

return UploadStatusDelete_Remote_Faild;

}

result = uploadFile(remoteFileName, f, ftpClient, 0);

}

}else {

result = uploadFile(remoteFileName, new File(local), ftpClient, 0);

}

return result;

}

/

  断开与远程服务器的连接

  @throws IOException

 /

public void disconnect() throws IOException{

if(ftpClientisConnected()){

ftpClientdisconnect();

}

}

/

  递归创建远程服务器目录

  @param remote 远程服务器文件绝对路径

  @param ftpClient FTPClient对象

  @return 目录创建是否成功

  @throws IOException

 /

public UploadStatus CreateDirecroty(String remote,FTPClient ftpClient) throws IOException{

UploadStatus status = UploadStatusCreate_Directory_Success;

String directory = remotesubstring(0,remotelastIndexOf("/")+1);

if(!directoryequalsIgnoreCase("/")&&!ftpClientchangeWorkingDirectory(new String(directorygetBytes("GBK"),"iso-8859-1"))){

//如果远程目录不存在,则递归创建远程服务器目录

int start=0;

int end = 0;

if(directorystartsWith("/")){

start = 1;

}else{

start = 0;

}

end = directoryindexOf("/",start);

while(true){

String subDirectory = new String(remotesubstring(start,end)getBytes("GBK"),"iso-8859-1");

if(!ftpClientchangeWorkingDirectory(subDirectory)){

if(ftpClientmakeDirectory(subDirectory)){

ftpClientchangeWorkingDirectory(subDirectory);

}else {

Systemoutprintln("创建目录失败");

return UploadStatusCreate_Directory_Fail;

}

}

start = end + 1;

end = directoryindexOf("/",start);

//检查所有目录是否创建完毕

if(end <= start){

break;

}

}

}

return status;

}

/

  上传文件到服务器,新上传和断点续传

  @param remoteFile 远程文件名,在上传之前已经将服务器工作目录做了改变

  @param localFile 本地文件File句柄,绝对路径

  @param processStep 需要显示的处理进度步进值

  @param ftpClient FTPClient引用

  @return

  @throws IOException

 /

public UploadStatus uploadFile(String remoteFile,File localFile,FTPClient ftpClient,long remoteSize) throws IOException{

UploadStatus status;

//显示进度的上传

long step = localFilelength() / 100;

long process = 0;

long localreadbytes = 0L;

RandomAccessFile raf = new RandomAccessFile(localFile,"r");

OutputStream out = ftpClientappendFileStream(new String(remoteFilegetBytes("GBK"),"iso-8859-1"));

//断点续传

if(remoteSize>0){

ftpClientsetRestartOffset(remoteSize);

process = remoteSize /step;

rafseek(remoteSize);

localreadbytes = remoteSize;

}

byte[] bytes = new byte[1024];

int c;

while((c = rafread(bytes))!= -1){

outwrite(bytes,0,c);

localreadbytes+=c;

if(localreadbytes / step != process){

process = localreadbytes / step;

Systemoutprintln("上传进度:" + process);

//TODO 汇报上传状态

}

}

outflush();

rafclose();

outclose();

boolean result =ftpClientcompletePendingCommand();

if(remoteSize > 0){

status = resultUploadStatusUpload_From_Break_Success:UploadStatusUpload_From_Break_Failed;

}else {

status = resultUploadStatusUpload_New_File_Success:UploadStatusUpload_New_File_Failed;

}

return status;

}

public static void main(String[] args) {

ContinueFTP myFtp = new ContinueFTP();

try {

Systemerrprintln(myFtpconnect("10106236", 21, "5", "jieyan"));

// myFtpftpClientmakeDirectory(new String("歌曲"getBytes("GBK"),"iso-8859-1"));

// myFtpftpClientchangeWorkingDirectory(new String("歌曲"getBytes("GBK"),"iso-8859-1"));

// myFtpftpClientmakeDirectory(new String("爱你等于爱自己"getBytes("GBK"),"iso-8859-1"));

// Systemoutprintln(myFtpupload("E:\\ywflv", "/ywflv",5));

// Systemoutprintln(myFtpupload("E:\\爱你等于爱自己mp4","/爱你等于爱自己mp4"));

//Systemoutprintln(myFtpdownload("/爱你等于爱自己mp4", "E:\\爱你等于爱自己mp4"));

myFtpdisconnect();

} catch (IOException e) {

Systemoutprintln("连接FTP出错:"+egetMessage());

}

}

}

服务器上是不存在文件图标的,图标的显示取决于你本地计算机的文件关联情况,要简单的话,你可以准备一些常用文件格式图标(比如rar、zip、doc等等)放在你程序中的资源文件中(比如是jpg或者png格式),然后读取到文件列表后,根据文件的扩展名来调用相应用的图标来显示

。

二、上传:1、获取服务器上和本地要上传文件的同名文件大小;2、向服务器发送“APPE+文件名”,通知服务器,接下来从数据通道发送给你的数据要附加到这个文件末尾。3、定位本地文件指针(和FTP上文件大小相同的位置)4、从文件指针处读数据并发送。好了,FTP断点续传的原理就这么简单。代码里将断点上传和断点下载放到同一个函数(MoveFile)里,通过get参数说明是上传还是下载。当然,整个FTP类的实现有800多行,包括登录、退出、获取FTP文件大小、删除FTP服务器上文件、响应服务器,解析响应信息等函数。相应的注释代码里都有,这里就不一一熬述了。这里重点说说PASV模式,即被动模式,这是FTP命令里比较不容易理解的一个,这条命令请求服务器在某个端口(非FTP默认端口或控制命令端口)创建一个监听socket,服务器创建的端口号会在客户端的控制命令通道上得到响应。得到这个端口号后,客户端就可以创建新的socket(数据通道)connect过去,并进行文件传输等工作。否则,如果为非被动模式,那么监听的socket由客户端创建,服务器connect过来。对于这条命令的存在我是这么理解的,存在这么一种情况:客户端的IP是个内网的IP,服务器的IP是个外网的,当进行数据传输时内网的IP对于服务器是不可见的,只有由服务器启动监听socket才能建立数据通道,所以必须以被动模式进行。:)

文件 服务器 远程 上传 目录
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 用bat批处理命令获取ftp服务器目录下的文件名及子目录下的文件名...各位大神帮帮忙

商业源码 钻石

分享到:
上一篇
根服务器在美国还是英国?
下一篇
修改驱动 搞定Thinkpad T400显卡问题

相关推荐

Discuz!x1.5版论坛如何上传插件?

Discuz!x1.5版论坛如何上传插件?

香港免备案域名注册香港免备案域名

香港免备案域名注册香港免备案域名

个人网站想租用服务器应该多少钱?

个人网站想租用服务器应该多少钱?

客户端能ping通但是连不上SQL SERVER数据库

客户端能ping通但是连不上SQL SERVER数据库

0条评论

发表评论 取消回复

要发表评论,您必须先登录。

提供最优质的资源集合

立即查看 了解详情
网站模板库

主题/付费下载/查看/余额管理/自定义积分,集成支付,卡密,推广奖励等。

本站导航
  • 链接标题
友情链接
  • 链接标题
快速搜索
本站由钛宇宙强力驱动
友情链接:
    商业源码网蜀ICP备2023005044号
    网站模板库
    • 登录
    • 注册
    网站模板库
    • 首页
    • web前端工具►
      • HTML/JS转换工具
      • JS/HTML格式化工具
      • 字母/英文大小写转换工具
      • robots.txt文件生成工具
      • Js压缩/格式化工具
      • Css在线压缩工具_代码格式化
    • 关于我们►
      • 免责声明
      • 联系我们
      • 广告服务
      • 服务项目
      • 关于我们
      • 网站轮播
      • 公告
      • 成都优优科技专用
      • 按行业分类
    • web学院►
      • 服务器教程
      • 学习资料►
        • 基础书籍
        • 交互书籍
        • 入门教程
        • 特效分类
      • 案例分享
      • web资讯
    • 网页特效►
      • 图片特效
      • 导航特效
      • 滑动按钮
      • 表单特效
      • 文字特效
      • 弹窗特效
      • 其他特效
    • 织梦模板►
      • 科技/电子/数码/通信
      • 文化/艺术/广告/传媒
      • 装修/设计/家居/家具
      • 基建/施工/地产/物业
      • 餐饮/酒店/旅游/票务
      • 食品/果蔬/饮料/日用
      • 服饰/珠宝/礼品/玩具
      • 摄影/婚庆/家政/生活
      • 运动/健身/体育/器材
      • 学校/教育/培训/科研
      • 美容/保健/医院/医疗
      • 金融/财税/咨询/法律
      • 政府/组织/集团/协会
      • 汽车/物流/交通/搬运
      • 机械/设备/制造/仪器
      • 化工/环保/能源/材料
      • 农业/畜牧/养殖/宠物
      • 其他模版
      • IT/软件/信息/互联网
    • 手机模板►
      • 手机APP模板
      • 微信小程序模板
      • wap
    • 网站模板►
      • joomla模板
      • Drupal模板
      • z-blog模板
      • EyouCms模板
      • Bootstrap模板
      • 帝国cms模板
      • CmsEasy模板
      • MetInfo模板
      • 购物商城模板►
        • Shopify主题
        • PrestaShop主题
      • 后台模板
      • 纯HTML模板
      • ecshop模板
      • phpwind模板
      • pbootcms模板
      • phpcms模板
      • wordpress模板
      • discuz模板
    • 教程►
      • 织梦教程
      • Discuz教程
      • WordPress教程
      • Phpcms教程
      • Phpwind教程
      • ECShop教程
      • Joomla教程
      • Drupal教程
      • zblog教程
      • EyouCMS教程
      • 帝国cms教程
      • MetInfo教程
      • CmsEasy教程

      弹窗标题

      这是一条网站公告,可在后台开启或关闭,可自定义背景颜色,标题,内容,用户首次打开关闭后不再重复弹出,此处可使用html标签...