0 0

bat ftp上传整个文件夹5

写了下面的脚本,想上传整个文件夹到ftp上,文件夹下还有子文件夹,可是一碰到子文件夹,就不能上传了
set remote-directoriy=/mine/directoriy
set local-directoriy=f:\test
set ip=172.26.31.121

(echo open %ip%
echo sitv
echo sitv
echo prompt
echo cd %remote-directoriy%
echo mput %local-directoriy%\*
echo bye
)>ftp.txt
ftp -s:ftp.txt

del ftp.txt
pause

问题补充:我这。。是个初学的啦 ,你这有的没的太多了啦,我看不懂啊,简单一点吧

高级java工程师 写道
因为工作需要,平生第一次用Windows的Dos命令写脚本。
 
需求:本地有个软件,每天生成相应的Log文件,并保存在以日期时间为目录的文件夹下。然后需要在后一天,将前一天生成的Log文件及文件夹上传到一个日志服务器进行保存。
 
实现工具:bat脚本,Ncftp工具,计划任务
 
其中,因为系统默认的ftp命令行,不支持passive模式,而Port模式下,需要修改或开启Log生成端服务器的防火墙,需要最终改用网络上免费的小工具Ncftp,这个小工具比系统自带的强大了N倍,支持命令行,支持PASV模式也可以切换PORT模式,还支持断点续传,上传成功后删除本地文件等。
 
实现步骤:
 
1)转到脚本所在目录;
 
2)上传之前未能成功上传的文件;
 
3)取到今天需要上传的文件夹名称;
 
4)上传今天需要上传的文件夹及文件;
 
5)如果成功,删除本地文件,如果不成功,将文件夹移到备份目录;
 
6)删除空目录;
 
以下是具体的脚本内容(英文版系统):
 
-----------------------------------------------------------
 
 
 
@echo off
 
 
 
set dt=%date:~10,4%%date:~4,2%%date:~7,2%
 
set batpath=%~dp0
 
set dname=
 
 
 
rem Turn to batfile's path
 
%~d0
 
cd %batpath%
 
mkdir bak >nul 2>nul
 
 
 
rem Re-upload bak log directory and file to NMS Server
 
 
 
type %batpath%Evtlog.txt | find "Ftpfailed" >nul 2>nul 
 
 
 
if %errorlevel% EQU 0 goto reupload 
 
if %errorlevel% NEQ 0 goto reupend
 
 
 
:reupload
 
echo ----------%dt% Re-upload bak Log------------ 2>>%batpath%Evtlog.txt 1>&2
 
%BatPath%ncftpput -u administrator -p password  -r 5 -z -R -DD 192.168.1.80 /192.168.1.53 %batpath%bak\* 2>>%batpath%Evtlog.txt 1>&2
 
if %errorlevel% EQU 0 goto cleanrelog
 
if %errorlevel% NEQ 0 goto reupfailed
 
 
 
:cleanrelog
 
cd.>%batpath%Evtlog.txt
 
for /f "tokens=*" %%a in ('dir /b /ad /s %batpath%bak\^|sort /r') do rd "%%a" /q 2>nul
 
goto reupend
 
 
 
:reupfailed
 
echo %dt%:Ftpfailed Reupload files the day before yesterday failed! 2>>%batpath%Evtlog.txt 1>&2
 
goto reupend
 
 
 
:reupend
 
 
 
rem Get the yesterday date
 
for /d %%i in (20*) do if %%i LSS %dt% set dname=%%i
 
if exist %dname% goto ncftp
 
if not exist %dname% goto :eof
 
 
 
:ncftp
 
rem Transfer yesterday log file and folder to NMS Server
 
echo ----------%dt% Ftp Log------------  2>>%batpath%Evtlog.txt 1>&2
 
%BatPath%ncftpput -u administrator -p password  -r 5 -z -R -DD 192.168.1.80 /192.168.1.53 %batpath%%dname% 2>>%batpath%Evtlog.txt 1>&2
 
if %errorlevel% EQU 11 goto session
 
if %errorlevel% EQU 10 goto library
 
if %errorlevel% EQU 9 goto error
 
if %errorlevel% EQU 8 goto usage
 
if %errorlevel% EQU 7 goto url
 
if %errorlevel% EQU 6 goto directorytimeout
 
if %errorlevel% EQU 5 goto directory
 
if %errorlevel% EQU 4 goto transfertimeout
 
if %errorlevel% EQU 3 goto transfer
 
if %errorlevel% EQU 2 goto connecttimeout
 
if %errorlevel% EQU 1 goto connect
 
if %errorlevel% EQU 0 goto success
 
 
 
:success
 
echo ncFtp:0Success. 2>>%batpath%Evtlog.txt 1>&2
 
goto exit
 
 
 
:connect
 
echo Ftpfailed:1Could not connect to remote host. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:connecttimeout
 
echo Ftpfailed:2Could not connect to remote host - timed out. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:transfer
 
echo Ftpfailed:3Transfer failed. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:transfertimeout
 
echo Ftpfailed:4Transfer failed - timed out. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:directory
 
echo Ftpfailed:5Directory change failed. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:directorytimeout
 
echo Ftpfailed:6Directory change failed - timed out. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:url
 
echo Ftpfailed:7Malformed URL. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:usage
 
echo Ftpfailed:8Usage error. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:error
 
echo Ftpfailed:9Error in login configuration file. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:library
 
echo Ftpfailed:10Library initialization failed. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:session
 
echo Ftpfailed:11Session initialization failed. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:movefile
 
rem Move yesterday log directory trees and files to the destination directory bak 
 
move /y %batpath%%dname% %batpath%bak\%dname%  2>>%batpath%Evtlog.txt 1>&2
 
if %errorlevel% NEQ 0 echo Moveerror:A duplicate file name exists, or the file cannot be found. 2>>%batpath%Evtlog.txt 1>&2
 
if %errorlevel% EQU 0 echo Move finish! 2>>%batpath%Evtlog.txt 1>&2
 
goto exit
 
 
 
:exit
 
 
 
rd %batpath%%dname% /q >nul 2>nul
 
echo ----------%dt% Ftp Log------------  2>>%batpath%Evtlog.txt 1>&2
 
 
 
 
 
 
 
-----------------------------------------------------------
 
 
[url]http://www.linuxso.com/linuxrumen/6368.html
[/url]


问题补充:服务器的解压缩命令?是什么啊?没找到
suziwen 写道
直接调用zip命令在本地压缩下上传,然后调用服务器 的命令解压缩下不是更好吗


问题补充:我可以把它打包传上去,可是上传完之后我也要解压好,只是不知道用命令要怎么解压
suziwen 写道
直接调用zip命令在本地压缩下上传,然后调用服务器 的命令解压缩下不是更好吗

2012年3月15日 10:19

2个答案 按时间排序 按投票排序

0 0

直接调用zip命令在本地压缩下上传,然后调用服务器 的命令解压缩下不是更好吗

2012年3月16日 00:19
0 0

因为工作需要,平生第一次用Windows的Dos命令写脚本。
 
需求:本地有个软件,每天生成相应的Log文件,并保存在以日期时间为目录的文件夹下。然后需要在后一天,将前一天生成的Log文件及文件夹上传到一个日志服务器进行保存。
 
实现工具:bat脚本,Ncftp工具,计划任务
 
其中,因为系统默认的ftp命令行,不支持passive模式,而Port模式下,需要修改或开启Log生成端服务器的防火墙,需要最终改用网络上免费的小工具Ncftp,这个小工具比系统自带的强大了N倍,支持命令行,支持PASV模式也可以切换PORT模式,还支持断点续传,上传成功后删除本地文件等。
 
实现步骤:
 
1)转到脚本所在目录;
 
2)上传之前未能成功上传的文件;
 
3)取到今天需要上传的文件夹名称;
 
4)上传今天需要上传的文件夹及文件;
 
5)如果成功,删除本地文件,如果不成功,将文件夹移到备份目录;
 
6)删除空目录;
 
以下是具体的脚本内容(英文版系统):
 
-----------------------------------------------------------
 
 
 
@echo off
 
 
 
set dt=%date:~10,4%%date:~4,2%%date:~7,2%
 
set batpath=%~dp0
 
set dname=
 
 
 
rem Turn to batfile's path
 
%~d0
 
cd %batpath%
 
mkdir bak >nul 2>nul
 
 
 
rem Re-upload bak log directory and file to NMS Server
 
 
 
type %batpath%Evtlog.txt | find "Ftpfailed" >nul 2>nul 
 
 
 
if %errorlevel% EQU 0 goto reupload 
 
if %errorlevel% NEQ 0 goto reupend
 
 
 
:reupload
 
echo ----------%dt% Re-upload bak Log------------ 2>>%batpath%Evtlog.txt 1>&2
 
%BatPath%ncftpput -u administrator -p password  -r 5 -z -R -DD 192.168.1.80 /192.168.1.53 %batpath%bak\* 2>>%batpath%Evtlog.txt 1>&2
 
if %errorlevel% EQU 0 goto cleanrelog
 
if %errorlevel% NEQ 0 goto reupfailed
 
 
 
:cleanrelog
 
cd.>%batpath%Evtlog.txt
 
for /f "tokens=*" %%a in ('dir /b /ad /s %batpath%bak\^|sort /r') do rd "%%a" /q 2>nul
 
goto reupend
 
 
 
:reupfailed
 
echo %dt%:Ftpfailed Reupload files the day before yesterday failed! 2>>%batpath%Evtlog.txt 1>&2
 
goto reupend
 
 
 
:reupend
 
 
 
rem Get the yesterday date
 
for /d %%i in (20*) do if %%i LSS %dt% set dname=%%i
 
if exist %dname% goto ncftp
 
if not exist %dname% goto :eof
 
 
 
:ncftp
 
rem Transfer yesterday log file and folder to NMS Server
 
echo ----------%dt% Ftp Log------------  2>>%batpath%Evtlog.txt 1>&2
 
%BatPath%ncftpput -u administrator -p password  -r 5 -z -R -DD 192.168.1.80 /192.168.1.53 %batpath%%dname% 2>>%batpath%Evtlog.txt 1>&2
 
if %errorlevel% EQU 11 goto session
 
if %errorlevel% EQU 10 goto library
 
if %errorlevel% EQU 9 goto error
 
if %errorlevel% EQU 8 goto usage
 
if %errorlevel% EQU 7 goto url
 
if %errorlevel% EQU 6 goto directorytimeout
 
if %errorlevel% EQU 5 goto directory
 
if %errorlevel% EQU 4 goto transfertimeout
 
if %errorlevel% EQU 3 goto transfer
 
if %errorlevel% EQU 2 goto connecttimeout
 
if %errorlevel% EQU 1 goto connect
 
if %errorlevel% EQU 0 goto success
 
 
 
:success
 
echo ncFtp:0Success. 2>>%batpath%Evtlog.txt 1>&2
 
goto exit
 
 
 
:connect
 
echo Ftpfailed:1Could not connect to remote host. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:connecttimeout
 
echo Ftpfailed:2Could not connect to remote host - timed out. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:transfer
 
echo Ftpfailed:3Transfer failed. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:transfertimeout
 
echo Ftpfailed:4Transfer failed - timed out. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:directory
 
echo Ftpfailed:5Directory change failed. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:directorytimeout
 
echo Ftpfailed:6Directory change failed - timed out. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:url
 
echo Ftpfailed:7Malformed URL. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:usage
 
echo Ftpfailed:8Usage error. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:error
 
echo Ftpfailed:9Error in login configuration file. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:library
 
echo Ftpfailed:10Library initialization failed. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:session
 
echo Ftpfailed:11Session initialization failed. 2>>%batpath%Evtlog.txt 1>&2
 
goto movefile
 
 
 
:movefile
 
rem Move yesterday log directory trees and files to the destination directory bak 
 
move /y %batpath%%dname% %batpath%bak\%dname%  2>>%batpath%Evtlog.txt 1>&2
 
if %errorlevel% NEQ 0 echo Moveerror:A duplicate file name exists, or the file cannot be found. 2>>%batpath%Evtlog.txt 1>&2
 
if %errorlevel% EQU 0 echo Move finish! 2>>%batpath%Evtlog.txt 1>&2
 
goto exit
 
 
 
:exit
 
 
 
rd %batpath%%dname% /q >nul 2>nul
 
echo ----------%dt% Ftp Log------------  2>>%batpath%Evtlog.txt 1>&2
 
 
 
 
 
 
 
-----------------------------------------------------------
 
 
[url]http://www.linuxso.com/linuxrumen/6368.html
[/url]

2012年3月15日 10:38

相关推荐

    数据库备份并通过FTP发送到指定文件夹下.bat

    rem ***********备份数据************** echo 开始数据库备份 时间 :

    BAT脚本实现文件批量上传示例

    BAT脚本实现文件批量上传示例

    用kettle设计ftp上传操作手册

    Kettle 数据抽取工具FTP 上传操作手册 一、Kettle 背景介绍 Kettle 是一款国外开源的 ETL 工具,纯 Java 编写,可以在 Window、Linux、Unix 上运行,数据抽取高效稳定。Kettle 这个 ETL 工具集,它允许你管理来自...

    定时导出Oracle数据库数据并上传到FTP目录脚本

    在这个场景中,我们需要创建一个BAT脚本来实现从Oracle数据库定时导出数据,并通过FTP将这些数据上传到远程服务器。 首先,我们需要了解Oracle数据库的基本操作。Oracle提供了多种数据导出工具,如SQL*Plus的`spool...

    备份文件夹到服务器

    批处理脚本可以调用这些工具,如`ftp.exe`或`WinSCP`等,实现文件或文件夹的自动上传。 4. **自动上传**:为了实现自动化,可以将批处理脚本设置为Windows的计划任务。在“任务计划程序”中,可以定义一个触发器,...

    自动化Ftp上传文件工具

    一个简单的命令行实现ftp上传文件或者文件夹 到ftp多个目录下的工具 平时经常会要上传一个文件或者将一个文件夹下面的文件到ftp上面多个目录下,每次都要花费很多时间切换目录,很是麻烦,而且容易出错或者遗漏上传...

    FTP连续上传下载工具

    总的来说,这款“FTP连续上传下载工具”是一个实用的解决方案,通过JAVA和BAT脚本的结合,提供了高效且用户友好的文件传输体验。正确配置和使用这个工具,可以帮助用户轻松应对各种复杂的FTP文件传输需求。

    TestFTP.zip

    根据压缩包子文件的文件名称列表 "下载包含子文件夹、下载单文件夹",我们可以推断压缩包内至少有两个文件,分别用于实现不同的FTP下载功能:一个是下载整个包含子文件夹的目录,另一个可能是下载单一的文件夹。...

    IIS中FTP设置用户和密码_实现多用户管理

    对这个进行扩展一下,可以更节省用户的时间,还是得靠 Windows 另外一个有用的命令 fc,编写如下批处理文件 FTP 更新.bat:tree /f /a d: >d:FTPnew.txt,fc /L d:FTP.txt d:FTPnew.txt >d:FTP 更新列表.txt,然后...

    监控本地目录并同步FTP服务器的服务

    而“FTP服务器”则表明了该服务与FTP协议的交互,FTP是一种广泛用于互联网上的文件传输标准,允许用户上传、下载文件。 压缩包中的文件名称列表提供了关于软件组件的一些线索: 1. `uninstall.bat` 和 `install....

    PB中实现ftp传输

    FileWrite(li_bat, 'cd c:\\temp\\') // 更改目录到本地文件夹 FileWrite(li_bat, 'ftp 202.114.67.2') // 连接到FTP服务器 FileWrite(li_bat, 'user') // 输入用户名 FileWrite(li_bat, '12345') // 输入密码 ...

    Windows2012绑定域账户FTP安装和权限、配额设置

    - 屏蔽特定文件类型上传(如.exe, .bat)。 2. **用户隔离**: - 不启用用户隔离,允许用户访问指定的FTP根目录。 #### 六、FTP权限设置 1. **部门员工权限**: - 在FTP授权规则中,删除默认的所有权限。 - ...

    bat文件大全.zip

    4. **网络操作**:下载、上传文件,执行FTP任务。 5. **故障修复**:通过运行特定的命令集合,解决某些系统问题。 6. **加密解密**:结合其他工具,BAT文件可以实现文件的加密和解密操作,虽然这可能不如专门的加密...

    8个用于FTP操作的OCX控件合集

    自己收集的FTP OCX控件合集,包含一个OCX函数查看器-可看OCX中的所有函数及所需参数,方便您使用: 6B605F6A CIFTP.OCX BE91B3F6 cscxftp.ocx ...E4F5B1A9 控件卸载-当前文件夹.bat 54553CF2 控件注册-当前文件夹.bat

    ftp同步教程

    FTP同步则是指通过FTP服务保持本地和远程服务器上的文件夹结构和文件内容的一致性。 在本教程中,我们将探讨如何实现FTP同步,以便于管理和更新网站内容或者确保多台设备之间的文件一致性。 1. **cwRsync工具**: ...

    bat.rar_.bat_批处理 bat

    2. 上传文件:利用`ftp`命令,可以编写批处理脚本来上传文件到FTP服务器。 3. 网络监控:可以使用`ping`、`netstat`等命令来监控网络连接状态,检查IP是否可达,或者查看端口占用情况。 系统类批处理: 1. 系统维护...

    windows脚本SFTP上传文件至备份服务器方案

    本方案旨在通过编写Windows批处理脚本,实现对特定文件夹内的文件进行自动归档、压缩,并通过SFTP方式将压缩后的文件上传到远程的Linux备份服务器上。这种方式不仅能够提高数据传输的安全性,还能够减少人工干预,...

    FTP工具(JAVA版)

    FTP工具(JAVA版)是一种基于Java编程语言实现的文件传输协议客户端应用,它允许用户方便地进行文件和文件夹的上传、下载以及管理操作。在Java中,FTP客户端通常通过利用java.net.Socket类和java.io流来实现与FTP...

    免费ftp服务器

    2.解压文件夹到一个目录,比如d盘根目录中,双击D:\apache-ftpserver-1.0.6文件夹中的hide.bat 3.打开ftp客户端FlashFXP,建立站点,ip为ftp所在服务器ip,比如127.0,0.1,192,168.0,3,端口为21,分别使用5个账号/...

    桌面运维-基于文件服务器利用BAT实现打印机驱动批量安装

    - **解压驱动文件**:将驱动程序解压缩后上传至共享文件夹中。 - **分类存储**:根据打印机型号分类存储,方便后续查找和使用。 4. **创建专用访问账号**: - **账号名**:例如 `test` - **密码**:例如 `...

Global site tag (gtag.js) - Google Analytics