[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[已解决]批处理怎样传送数据给FTP服务器以保证数据安全?

各位高手:
  您好!本人需要编一个数据传送上FTP服务器的脚本文件,因本人是刚学批处理不久,还不能独立编写,求各位高手多多指教!先行谢谢!
本人电脑有一个软件会生成STD类型的文件,需要上传到指定的FTP服务器上面以作保存分析用。所用的系统有WIN 95/NT/XP(如有可能,可以编写一个可以在UNIX 系统下运行的脚本)

BAT程序要求如下:(目的是把同一个文件夹里面所有生成的STD文件完整地上传到FTP服务器)(比如:我的STD文件保存在C:\AB,LOG文件也最好能把它放进C.)

1. 检测本电脑IP(192.168.1.5)地址,若发现有改变现象,则保存到LOG日志文件中。
2. 检测网络(如可PING10.94.1.7 )是否通畅,如有故障,请提示网络有问题。
3. 检测数据,如找到完整的STD数据,则上传到FTP197.198.134.105)中保存分析。上传完后要直接删除STD数据文件.不能删掉别的正在生成的STD文件.因为有很多别的STD文件在时刻生成.
4. STD 数据生成过程较慢,有时一个小时或更久,因此在选择传送时,不能把生成一半的STD文件传上去,这样会影响STD文件的继续生成,如何能实现这样数据不被破坏而又能完整生成完整传送STD的功能。数据必须每天24小时传送。保证数据安全不会丢失.

因为这种STD文件一旦开始生成,只生成一半左右,就被上传(因为好像生成一半时也可以被上传),这样会造成上传的数据不完整,而且刚被上传的STD数据不会再重新生成,因此,一定要等到生成完毕后才能传送为最佳。分析判断数据时,我经常是这样判断数据,根据文件的大小,一开始生成时,会比较小,几个KB左右,完成时有几个M左右。因此通过比较文件的大小并且加上时间的限制才行,比较一段时间(一个小时左右),如果没有发现大小的改变,则认为是完成生成STD文件了的。(如您有更好的检测完整的数据分析更好).

5.关于每次生成的STD文件的命名名称(如test123.STD)都完全不一样.所以每次上传时都不会覆盖前一次上传的STD.
C:\AB\下面有很多STD文件,而且命名都不一样。(批处理可以用通配符识别 *.STD或可以想出更好的办法识别?)
如果STD 完全生成完毕,全都都要上传。是的,每个STD文件都需单独判断是否生成完毕然后单独或一起上传STD文件只要生成完毕,就全部上传.

谢谢你的理解和支持!














[ 本帖最后由 jackjh 于 2009-12-23 00:01 编辑 ]
1

评分人数

    • keen: 感谢主动给标题标注[已解决]字样PB + 2

“上传完后要直接删除STD数据文件,而不破坏文件生成”,这句话改怎么理解?
“不能把生成一半的STD文件传上去”,你通常如何判断STD数据生成完毕?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

“上传完后要直接删除STD数据文件,而不破坏文件生成”,这句话改怎么理解?
因为这种STD文件一旦开始生成,只生成一半左右,就被上传(因为好像生成一半时也可以被上传),这样会造成上传的数据不完整,而且不会再重新生成STD,因此,一定要等到生成完毕后才能传送为最佳的。

“不能把生成一半的STD文件传上去”,你通常如何判断STD数据生成完毕?是的,不能传送一半的数据,我经常是这样判断数据的,根据文件的大小,一开始生成时,会比较小,几个KB左右,完成时有几个M左右。我觉得通过比较文件的大小并且加上时间的限制才行,比较一段时间(一个小时吧),如果没有发现大小的改变,则认为是完成生成STD文件了的。谢谢你的理解和支持!


TOP

每次生成的STD数据文件文件名称都一样?那岂不是后面一次上传会覆盖前面一次上传?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

对了,我忘了提醒了,每次生成的STD文件的命名都完全不一样的.所以每次上传时都不会覆盖前一次上传的STD.

TOP

回复 5楼 的帖子

每次生成的STD文件的命名都完全不一样的,那批处理怎么知道每次STD叫什么名字?
C:\AB\下面只有一个STD文件?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

每次生成的STD文件的命名都完全不一样的,那批处理怎么知道每次STD叫什么名字? C:\AB\下面只有一个STD文件?

C:\AB\下面有很多STD文件,而且命名都不一样。批处理可以用通配符识别。怎么编不清楚呢?

TOP

回复 7楼 的帖子

有很多STD文件,而且命名都不一样,那到底要上传哪个呢?
每个STD文件都需单独判断是否生成完毕然后单独上传?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

有很多STD文件,而且命名都不一样,

如果STD 完全生成完毕,都要上传。是的,每个STD文件都需单独判断是否生成完毕然后单独或一起上传。

TOP

好的,我基本上知道该怎么写代码了。
你能否把3、5、7、9楼的问题描述全部更新到顶楼?以便他人查看。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10楼 的帖子

管理员,你好!
现在代码怎么样了呢?能否发出来一下?

TOP

回复 10楼 的帖子

batcher 大哥,
能不能帮忙写出这段代码呢,我一直在等着,期望你的好消息.

TOP

StdCheck.bat
  1. @echo off
  2. set StdFolder=C:\AB
  3. set LogFile=%StdFolder%\Std.log
  4. set LocalIP=192.168.1.5
  5. set RemoteIP=10.94.1.7
  6. :Init
  7. rem 检查本电脑IP地址是否有改变
  8. for /f "tokens=2 delims=:" %%a in ('ipconfig^|findstr "IP.*Address"') do (
  9.     set LocalIP=%%a
  10. )
  11. set LocalIP=%LocalIP: =%
  12. if "" neq "" (
  13.     >>"%LogFile%" echo [%date% %time%]本电脑IP地址变为:%LocalIP%
  14. )
  15. rem 检查网络是否畅通
  16. ping -n 1 -l 1 %RemoteIP% >nul 2>&1 || >>"%LogFile%" echo [%date% %time%]网络有问题 && goto :Init
  17. rem 检查STD数据文件是否生成完毕
  18. setlocal enabledelayedexpansion
  19. for %%a in ("%StdFolder%\*.std") do (
  20.     set StdSizeNow_%%~na=0
  21.     set StdSizeLast_%%~na=0
  22. )
  23. :CheckStd
  24. for %%a in ("%StdFolder%\*.std") do (
  25.     set StdSizeNow_%%~na=%%~za
  26.     if "!StdSizeNow_%%~na!" neq "0" (
  27.         if "!StdSizeLast_%%~na!" neq "0" (
  28.             if "!StdSizeNow_%%~na!" equ "!StdSizeLast_%%~na!" (
  29.                 rem 假设系统日期格式是:yyyy-mm-dd weekday
  30.                 rem 根据当前的系统日期时间对待上传的STD数据文件进行归档
  31.                 set StdAchive=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.std.bak
  32.                 ren "%%a" "%StdAchive%"
  33.                 start StdUpload.bat "%StdFolder%" "%StdAchive%"
  34.                 ping -n 3600 127.1 >nul 2>&1
  35.                 goto :Init
  36.             )
  37.         ) else (
  38.             set StdSizeLast_%%~na=!StdSizeNow_%%~na!
  39.         )
  40.     )
  41. )
  42. endlocal
  43. ping -n 3600 127.1 >nul 2>&1
  44. goto :CheckStd
复制代码
StdUpload.bat
  1. @echo off
  2. rem 上传STD数据到FTP
  3. set ftpUser=USERNAME
  4. set ftpPass=PASSWORD
  5. set ftpIP=197.198.134.105
  6. rem 假设系统日期格式是:yyyy-mm-dd weekday
  7. set ftpFile=%~1\FTP%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.txt
  8. >"%ftpFile%" echo,%ftpUser%
  9. >>"%ftpFile%" echo,%ftpPass%
  10. >>"%ftpFile%" echo bin
  11. >>"%ftpFile%" echo put "%~1\%~2"
  12. >>"%ftpFile%" echo bye
  13. start ftp -v -i -s:"%ftpFile%" %ftpIP%
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

batcher 大哥,
谢谢您! 我从你的文章上尝到了很多有用的东西,真的好佩服你啊,以后更要向你多多学习!多多交流!这么好的论坛,我是来对了, 我以后要认真对待,刻苦学习P技术啊.我建议以后一个QQ群专门交流批处理技术问题.

TOP

回复 14楼 的帖子

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表