标题: [文本处理] [已解决]求大神们写一个从本地上传到FTP的bat [打印本页]
作者: 4298728 时间: 2022-2-18 13:23 标题: [已解决]求大神们写一个从本地上传到FTP的bat
本帖最后由 4298728 于 2022-2-25 18:52 编辑
本地文件夹不定时拷入新文件或者文件夹,需要把新文件或者文件夹上传到FTP服务器,只上传最新的内容。
1.ftp服务器看完文件一般都会删除。
2.只知道ftp服务器的账号密码。
3.本地文件夹路径有些很深,要求上传到ftp服务器时保持原有的路径和名字,ftp服务器不存在的文件夹能自动新建。
暂时想到用时间戳,检查本地目录哪些文件是今天产生的,如果这个目录下有今天产生的文件,就上传到FTP服务器。
作者: idwma 时间: 2022-2-23 18:06
- @echo off&setlocal enabledelayedexpansion
- set ip=127.0.0.1
- set u=user
- set p=password
- 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
复制代码
作者: 4298728 时间: 2022-2-24 16:48
回复 2# idwma
大佬,这个怎么用,本地文件夹和ftp目标地址在哪设置?
作者: idwma 时间: 2022-2-24 18:31
第二行是ftp地址
可以把bat保存到本地文件夹里后运行
也可以在开头加一行指定文件夹路径复制代码
作者: 4298728 时间: 2022-2-25 09:31
@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
大佬,请问是这样子吗?
作者: idwma 时间: 2022-2-25 13:58
回复 5# 4298728
没有ftp服务器没试过,你运行一下试试看有没有效
作者: 4298728 时间: 2022-2-25 16:05
回复 6# idwma
用户(192.168.9.89none)):
ftp> type binary
ftp> bye
请按任意键继续. . .
运行后在CMD界面显示如上
作者: 4298728 时间: 2022-2-25 16:07
回复 6# idwma
把本地磁盘D:\ToUnicmicro目录下的文件及文件夹上传到ftp://192.168.9.89/ 的D:\ftp文件夹上,要求:1.只上传今天产生的文件及文件夹,具体文件格式不确定。2.上传到ftp的文件和文件夹保持原有的路径和名称。
大佬麻烦再帮我看看。感谢
作者: idwma 时间: 2022-2-25 16:55
本帖最后由 idwma 于 2022-2-25 18:51 编辑
回复 8# 4298728 - @echo off&setlocal enabledelayedexpansion
- cd /d "D:\ToUnicmicro\"
- set ip=192.168.9.89
- set port=21
- set u=test
- set p=Aa4298728
- set fd=/ftp
-
- set cfg=%tmp%\ftp.cfg
- (
- echo open %ip% %port%
- echo %u%
- echo %p%
- echo type binary
- echo mkdir %fd%
- echo cd %fd%
- for /f "delims=" %%i in ('dir /b/s /a-d') do (
- for /f %%j in ("%%~ti") do (
- if "%%j"=="%date:~0,10%" if not "%%~nxi"=="%~nx0" (
- set "d=%%~dpi"
- call set "d=%%d:!cd!=%%"
- if not "!d!"=="!dd!" if not "!d!"=="\" (
- set dd=!d!
- set d=!d:~1,-1!
- set t=
- for /f "delims=" %%a in ('"echo;!d:\=&echo;!"') do (
- set t=!t!/%%a
- echo mkdir "%fd%!t!"
- )
- )
- echo cd "%fd%/!d:\=/!"
- set "d=%%i"
- call set "d=%%d:!cd!\=%%"
- echo put "!d:\=/!"
- )
- )
- )
- echo bye
- )>"%cfg%"
- ftp -i -v -s:"%cfg%"
- del "%cfg%"
- pause
复制代码
作者: 4298728 时间: 2022-2-25 17:12
回复 9# idwma
大佬,这个代码在本地运行后,在我的ftp服务器上的D:\ftp下新建了一个名为ftp的目录,里面的内容是空的,我本地D:\ToUnicmicro里面是有昨天新建的文件。
作者: 4298728 时间: 2022-2-25 17:13
回复 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
请按任意键继续. . .
作者: idwma 时间: 2022-2-25 17:25
不指定服务器文件夹可以把第7行删了
你不是说只上传今天的文件吗?你在D:\ToUnicmicro里随便新建一个空文件试试
作者: 4298728 时间: 2022-2-25 18:22
回复 12# idwma
是上传今天的文件,我刚才说错了。我把set fd=/ToUnicmicro/改成这样应该没问题吧?我现在测试是没问题的了。能不能加您微信,感谢一下大佬。
作者: 4298728 时间: 2022-2-25 18:26
回复 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"
作者: idwma 时间: 2022-2-25 18:29
回复 13# 4298728
路径结尾不要加/
set fd=/ToUnicmicro
作者: 4298728 时间: 2022-2-25 18:37
回复 15# idwma
大佬,我不加\的时候,上传到ftp的文件全都在ToUncmicro目录下面,文件夹是没问题。
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"
ftp> mkdir "/ToUnicmicro/SADASD"
ftp> cd "/ToUnicmicroSADASD"
CWD failed. "/ToUnicmicroSADASD": directory not found.
ftp> put "SADASD/新建文本文档.txt"
ftp> mkdir "/ToUnicmicro/SADASD"
Directory already exists
ftp> mkdir "/ToUnicmicro/SADASD/DS"
ftp> cd "/ToUnicmicroSADASD/DS"
CWD failed. "/ToUnicmicroSADASD/DS": directory not found.
ftp> put "SADASD/DS/XCXC .docx"
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |