写了下面的脚本,想上传整个文件夹到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命令在本地压缩下上传,然后调用服务器 的命令解压缩下不是更好吗
相关推荐
NULL 博文链接:https://onestopweb.iteye.com/blog/2432415
有个文件夹下面有很多子文件夹,每个子文件夹有不同数量的文件,bat可以统计下每个子文件各有多少文件然后生成txt报告。 格式如下: 文件夹名 数量 我的音乐 2 我的电影 4 我的图片 0
bat脚本从FTP下载文件的方式(下载实践的完整实例)
bat脚本判断文件夹是否为空,使用if先进行文件夹存在判断,在对文件夹是否为空判断。
实现FTP批量上传文件到指定目录功能的bat脚本: @echo off @echo delete iplist.txt @del iplist.txt @setlocal EnableDelayedExpansion @echo create upload iplist.... @for /L %%i in (51,1,52) do ( @echo ...
默认为jpg格式,可在代码中编辑修改为其他格式,会将bat所在文件夹中所有的该格式文件都上调到父文件夹中(包括子文件夹),使用前请备份数据测试!!!
这个是个批处理BAT,功能简单单一,就是可以删除当前文件夹下的所有空文件夹
dos_命令_bat命令_遍历文件夹目录树批量修改_后缀名
windows系统下ftp上传文档
清除共享.bat 用于停止电脑中的共享文件夹,直接运行即可
bat批处理,指定文件夹,通过函数传参
就是想上传点东西:压缩包含 0批处理文件名字符替换.bat—— 1关机.bat—— 1取消18点关机 .bat—— 1取消关机和重启.bat—— 1在18点关机.bat—— 1重启电脑.bat—— LIST.TXT—— M加D_为前缀D_可以文本打开修改....
脚本里包含了一下BAT脚本范例:1 获得系统日期 2 获得键盘输入 3 录入密码隐藏 4 全局变量 5 ftp 登录 6 ftp下载 8 本地创建文件夹并设置为隐藏
rem ***********备份数据************** echo 开始数据库备份 时间 :
批量删除文件夹下指定文件夹及文件之外的bat脚本
用于服务器自动清理删除指定目录下所有空文件夹(脚本会自动判断文件夹内部是否存在文件或文件夹),文件命令代码简单易懂,使用非常简单稍作修改即可直接使用。
以文本打开bat,之后再2,3,4,5,6,7,8,9,10.。处分别替换所需文件名称。然后点击运行即可。
windows:获取文件夹下所有的文件名
批处理查找当前文件夹及其子目录某文件并运行 当前文件夹下(包括子目录下)查找某文件并运行 批处理 bat
Windows清除指定目录下的文件夹以及对应文件,自动获取电脑用户名兼容Windows7、8、10,非常好用的工具。