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

相关推荐

Global site tag (gtag.js) - Google Analytics