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

[文本处理] [已解决]求大神们写一个从本地上传到FTP的bat

本帖最后由 4298728 于 2022-2-25 18:52 编辑

本地文件夹不定时拷入新文件或者文件夹,需要把新文件或者文件夹上传到FTP服务器,只上传最新的内容。
1.ftp服务器看完文件一般都会删除。
2.只知道ftp服务器的账号密码。
3.本地文件夹路径有些很深,要求上传到ftp服务器时保持原有的路径和名字,ftp服务器不存在的文件夹能自动新建。
暂时想到用时间戳,检查本地目录哪些文件是今天产生的,如果这个目录下有今天产生的文件,就上传到FTP服务器。

  1. @echo off&setlocal enabledelayedexpansion
  2. set ip=127.0.0.1
  3. set u=user
  4. set p=password
  5. set cfg=ftp.cfg
  6. (
  7. echo %u%
  8. echo %p%
  9. echo type binary
  10. )>"%cfg%"
  11. (for /f "delims=" %%i in ('dir /b/s /a-d') do (
  12.     for /f %%j in ("%%~ti") do (
  13.         if not "%%~nxi"=="%~nx0" if not "%%~nxi"=="%cfg%" if "%%j"=="%date:~0,10%" (
  14.             set "d=%%~dpi"
  15.             call set "d=%%d:!cd!=%%"
  16.             echo mkdir "!d:\=/!"
  17.             echo cd "!d:\=/!"
  18.             set "d=%%i"
  19.             call set "d=%%d:!cd!\=%%"
  20.             echo put "!d:\=/!"
  21.         )
  22.     )
  23. ))>>"%cfg%"
  24. echo bye>>"%cfg%"
  25. ftp -i -v -s:"%cfg%" %ip%
  26. del "%cfg%"
  27. pause
复制代码

TOP

回复 2# idwma


    大佬,这个怎么用,本地文件夹和ftp目标地址在哪设置?

TOP

第二行是ftp地址
可以把bat保存到本地文件夹里后运行
也可以在开头加一行指定文件夹路径
  1. cd /d "f:\test\"
复制代码

TOP

@echo off&setlocal enabledelayedexpansion
cd /d "D:\ToUnicmicro\"    //本地文件夹路径
set ip=192.168.9.89        //ftp地址
set u=test                       //账号
set p=Aa4298728.          //密码
set cfg=ftp.cfg
(
echo %u%
echo %p%
echo type binary
)>"%cfg%"
(for /f "delims=" %%i in ('dir /b/s /a-d') do (
    for /f %%j in ("%%~ti") do (
        if not "%%~nxi"=="%~nx0" if not "%%~nxi"=="%cfg%" if "%%j"=="%date:~0,10%" (
            set "d=%%~dpi"
            call set "d=%%d:!cd!=%%"
            echo mkdir "!d:\=/!"
            echo cd "!d:\=/!"
            set "d=%%i"
            call set "d=%%d:!cd!\=%%"
            echo put "!d:\=/!"
        )
    )
))>>"%cfg%"
echo bye>>"%cfg%"
ftp -i -v -s:"%cfg%" %ip%
del "%cfg%"
pause

大佬,请问是这样子吗?

TOP

回复 5# 4298728


    没有ftp服务器没试过,你运行一下试试看有没有效

TOP

回复 6# idwma
用户(192.168.9.89none)):

ftp> type binary
ftp> bye
请按任意键继续. . .

运行后在CMD界面显示如上

TOP

回复 6# idwma

把本地磁盘D:\ToUnicmicro目录下的文件及文件夹上传到ftp://192.168.9.89/ 的D:\ftp文件夹上,要求:1.只上传今天产生的文件及文件夹,具体文件格式不确定。2.上传到ftp的文件和文件夹保持原有的路径和名称。

大佬麻烦再帮我看看。感谢

TOP

本帖最后由 idwma 于 2022-2-25 18:51 编辑

回复 8# 4298728
  1. @echo off&setlocal enabledelayedexpansion
  2. cd /d "D:\ToUnicmicro\"
  3. set ip=192.168.9.89
  4. set port=21
  5. set u=test
  6. set p=Aa4298728
  7. set fd=/ftp
  8. set cfg=%tmp%\ftp.cfg
  9. (
  10. echo open %ip% %port%
  11. echo %u%
  12. echo %p%
  13. echo type binary
  14. echo mkdir %fd%
  15. echo cd %fd%
  16. for /f "delims=" %%i in ('dir /b/s /a-d') do (
  17.     for /f %%j in ("%%~ti") do (
  18.         if "%%j"=="%date:~0,10%" if not "%%~nxi"=="%~nx0" (
  19.             set "d=%%~dpi"
  20.             call set "d=%%d:!cd!=%%"
  21.             if not "!d!"=="!dd!" if not "!d!"=="\" (
  22.                 set dd=!d!
  23.                 set d=!d:~1,-1!
  24.                 set t=
  25.                 for /f "delims=" %%a in ('"echo;!d:\=&echo;!"') do (
  26.                     set t=!t!/%%a
  27.                     echo mkdir "%fd%!t!"
  28.                 )
  29.             )
  30.             echo cd "%fd%/!d:\=/!"
  31.             set "d=%%i"
  32.             call set "d=%%d:!cd!\=%%"
  33.             echo put "!d:\=/!"
  34.         )
  35.     )
  36. )
  37. echo bye
  38. )>"%cfg%"
  39. ftp -i -v -s:"%cfg%"
  40. del "%cfg%"
  41. pause
复制代码

TOP

回复 9# idwma

大佬,这个代码在本地运行后,在我的ftp服务器上的D:\ftp下新建了一个名为ftp的目录,里面的内容是空的,我本地D:\ToUnicmicro里面是有昨天新建的文件。

TOP

回复 9# idwma


    再次运行提示如下:
ftp> open 192.168.9.89 21
用户(192.168.9.89none)):

ftp> type binary
ftp> mkdir /ftp
Directory already exists
ftp> cd /ftp
ftp> bye
请按任意键继续. . .

TOP

不指定服务器文件夹可以把第7行删了
你不是说只上传今天的文件吗?你在D:\ToUnicmicro里随便新建一个空文件试试

TOP

回复 12# idwma


    是上传今天的文件,我刚才说错了。我把set fd=/ToUnicmicro/改成这样应该没问题吧?我现在测试是没问题的了。能不能加您微信,感谢一下大佬。

TOP

回复 12# idwma


ftp> open 192.168.9.89 21
用户(192.168.9.89none)):

ftp> type binary
ftp> mkdir /ToUnicmicro/
ftp> cd /ToUnicmicro/
ftp> cd "/ToUnicmicro//"            大佬,顺便问一下,末尾的这个 // 是什么意思
ftp> put "新建文本文档 (2).txt"

TOP

回复 13# 4298728

路径结尾不要加/
    set fd=/ToUnicmicro

TOP

返回列表