标题: [文件操作] [已解决]从远程共享下载指定日期之前指定后缀名的文件的批处理 [打印本页]
作者: lazygc520 时间: 2009-7-21 17:05 标题: [已解决]从远程共享下载指定日期之前指定后缀名的文件的批处理
现在我想要从FTP服务器上download命名后缀为.bmp的文件。\\172.19.103.70\d$\P6502-01\20090720拷贝到我的电脑E:\Wangxc
我的代码如下:-
- @echo off
- set DownFolder=E:\pic
- >"%tmp%\MyDel.vbs" echo dt=date()-1
- >>"%tmp%\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^& day(dt),2)
- >>"%tmp%\MyDel.vbs" echo wscript.echo s
- for /f %%a in ('cscript /nologo "%tmp%\MyDel.vbs"') do set yesterday=%%a
- set FtpFile=%temp%\TempAcc.txt
- >>"%FtpFile%" echo cnsz\sz.tdbi
- >>"%FtpFile%" echo aaa111~~
- >>"%FtpFile%" echo bin
- >>"%FtpFile%" echo cd \\172.19.103.70\d$\P6502-01\%yesterday%
- >>"%FtpFile%" echo mget *.bmp
- >>"%FtpFile%" echo bye
- start ftp -v -i -s:"%FtpFile%" 172.19.103.70
- copy /y "%FtpFile%\*.*" "%DownFolder%"
- goto :eof
复制代码
但是执行不成功,请问是什么原因?
[ 本帖最后由 lazygc520 于 2009-7-31 13:18 编辑 ]
作者: lazygc520 时间: 2009-7-21 17:17
TempAcc.txt的内容:
-
- sz.tdbi
- aaa111~~
- bin
- cd \\172.19.103.70\d$\P6502-01\20090720
- mget *.bmp
- bye
- sz.tdbi
- aaa111~~
- bin
- cd \\172.19.103.70\d$\P6502-01\20090720
- mget *.bmp
- bye
- sz.tdbi
- aaa111~~
- bin
- cd \\172.19.103.70\d$\P6502-01\20090720
- mget *.bmp
- bye
- sz.tdbi
- aaa111~~
- bin
- cd \\172.19.103.70\d$\P6502-01\20090720
- mget *.bmp
- bye
- cnsz\sz.tdbi
- aaa111~~
- bin
- cd \\172.19.103.70\d$\P6502-01\20090720
- mget *.bmp
- bye
- cnsz\sz.tdbi
- aaa111~~
- bin
- cd \\172.19.103.70\d$\P6502-01\20090720
- mget *.bmp
- bye
- cnsz\sz.tdbi
- aaa111~~
- bin
- cd \\172.19.103.70\d$\P6502-01\20090720
- mget *.bmp
- bye
- cnsz\sz.tdbi
- aaa111~~
- bin
- cd \\172.19.103.70\d$\P6502-01\20090720
- mget *.bmp
- bye
- cnsz\sz.tdbi
- aaa111~~
- bin
- cd \\172.19.103.70\d$\P6502-01\20090720
- mget *.bmp
- bye
- cnsz\sz.tdbi
- aaa111~~
- bin
- cd \\172.19.103.70\d$\P6502-01\20090720
- mget *.bmp
- bye
复制代码
MyVbs的内容:
-
- dt=date()-1
- s=right(year(dt),4) & right("0" & month(dt),2) & right("0" & day(dt),2)
- wscript.echo s
复制代码
[ 本帖最后由 lazygc520 于 2009-7-21 17:19 编辑 ]
作者: keen 时间: 2009-7-21 19:08 标题: 回复 1楼 的帖子
你的"执行不成功"指的是什么,到底哪儿出错了,错误信息是什么?
作者: Batcher 时间: 2009-7-21 20:06
1、检查你的用户名和密码能否登陆FTP:
开始
运行
cmd
ftp 172.19.103.70
cnsz\sz.tdbi
aaa111~~
2、如果能够登录成功,在FTP的命令行中切换到存放bmp文件所在的目录,执行这个命令看看FTP路径:
pwd
3、先start后copy的做法是错误的,因为此时可能根本没有下载完。可以先切换到%DownFolder%目录,再开始下载。
4、>>"%FtpFile%" echo cnsz\sz.tdbi 这句里面应该删除一个大于号
作者: lazygc520 时间: 2009-7-22 08:24
- 先start后copy的做法是错误的,因为此时可能根本没有下载完。可以先切换到%DownFolder%目录,再开始下载。
复制代码
这句怎么理解?
作者: Batcher 时间: 2009-7-22 15:16 标题: 回复 5楼 的帖子
你先把其他问题解决了,再讨论这里吧。
作者: lazygc520 时间: 2009-7-23 10:02
我现在能登录到ftp 172.19.103.70。用pwd命令显示“/”为当前目录。但是我怎么切换到[url=file://\\172.19.103.70\d$\P6502-01\]\\172.19.103.70\d$\P6502-01\[/url]目录下?
[ 本帖最后由 lazygc520 于 2009-7-23 10:04 编辑 ]
作者: lazygc520 时间: 2009-7-27 11:07
有没有人能帮忙解决一下?
作者: Batcher 时间: 2009-7-27 11:19 标题: 回复 7楼 的帖子
连上FTP以后,用ls和cd命令找到待下载的文件保存在FTP的哪个路径下面。
作者: lazygc520 时间: 2009-7-27 11:34
使用过了ls命令。我是从另外一台xp系统的机器的一个共享文件夹中通过ftp获取数据的。
ftp命令结果如下:
ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
226 Transfer complete.
作者: lazygc520 时间: 2009-7-27 11:40
以下是cd命令的结果:
ftp> cd
Remote directory d:/P6502-01
550 d:/P6502-01: The filename, directory name, or volume label syntax is incorre
ct.
作者: lazygc520 时间: 2009-7-27 13:44
请高人帮忙解决下!!
作者: Batcher 时间: 2009-7-27 15:26 标题: 回复 10楼 的帖子
9楼的重点是“找到待下载的文件保存在FTP的哪个路径下面”,你找到了么?
作者: lazygc520 时间: 2009-7-27 15:33
恕我愚昧,我没有找到。
FTP的路径是局域网内另一台机器的共享地址。比如是 172.19.103.70 的d$盘下的P6502-01的文件夹,该用什么命令?
作者: Batcher 时间: 2009-7-27 16:01 标题: 回复 14楼 的帖子
从10楼的结果来看,FTP里面什么都没有,你想下载啥?
作者: lazygc520 时间: 2009-7-27 16:05
我只登陆了172.19.103.70这台机器,我想要下载该台机器d$盘下的P6502-01的文件夹里的内容。
作者: lazygc520 时间: 2009-7-27 16:11
需要Copy的账户名:asd
passwor :123
IP:172.19.103.70
从\\172.19.103.70\d$\P6502-01\20090720拷贝到我的电脑E:\Wangxc
拷贝文件的类型.bmp
作者: Batcher 时间: 2009-7-27 16:15 标题: 回复 16楼 的帖子
远程共享和FTP不是同一个概念。不是说你共享了一个文件夹,别人就能通过FTP来下载,除非该文件夹位于FTP目录下面。
如果D:\P6502-01只是一个普通的共享文件夹,没有放到FTP目录里面,这时可以通过copy/xcopy等命令来复制到本地,不能用FTP了。
作者: lazygc520 时间: 2009-7-27 16:21
回Batcher,也就是说其实是远程共享,而我现在只是通过ftp对其进行访问?
像这种情况,你能不能通过这个例子写个实例给我看看?
作者: Batcher 时间: 2009-7-27 16:28 标题: 回复 19楼 的帖子
批处理如何在dos下访问网上邻居远程复制文件
http://bbs.bathome.net/thread-4344-1-1.html
在局域网里通过批处理发送文件到远程用户的桌面
http://bbs.bathome.net/thread-4431-1-1.html
体验一下论坛的搜索功能吧,推荐使用关键字:远程
Q: 如何使用论坛搜索功能来解决自己的问题?
A: 参考《批处理之家论坛使用常见问题FAQ》:http://bbs.bathome.net/thread-3473-1-1.html
作者: lazygc520 时间: 2009-7-27 16:40
回楼上的,如果带有用户名和密码怎么办?
C:\Documents and Settings\Admin>pushd \\172.19.103.70\d$\P6502-01
登录失败: 未知的用户名或错误密码。
作者: Batcher 时间: 2009-7-27 17:55 标题: 回复 21楼 的帖子
那个帖子里面不是有两种方案么?
作者: lazygc520 时间: 2009-7-28 08:33
但是都需要用户名和密码
作者: Batcher 时间: 2009-7-28 08:56 标题: 回复 23楼 的帖子
你不是知道用户名和密码么,需要就写呗。
作者: lazygc520 时间: 2009-7-28 16:51
不会啊。会的话就不会问了。。。
作者: Batcher 时间: 2009-7-28 18:04 标题: 回复 25楼 的帖子
不会没关系,看看帮助就会了:
net use /?
作者: lazygc520 时间: 2009-7-29 10:23
希望写个例子。net use/?后面只有参数。。。
作者: Batcher 时间: 2009-7-29 11:06 标题: 回复 27楼 的帖子
希望尽快学会使用论坛的搜索功能:http://bbs.bathome.net/thread-3473-1-1.html
打开局域网共享的批处理如何自动输入用户名和密码
http://bbs.bathome.net/thread-2743-1-1.html
net命令集合
http://bbs.bathome.net/thread-589-1-1.html
作者: lazygc520 时间: 2009-7-30 14:41
- net use z: 172.19.103.70\d$\P6502-01\20090729 "aaa111~~" /user:cnsz\sz.tdbi
- start z:
复制代码
但是执行bat连共享目录都打不开?
作者: Batcher 时间: 2009-7-30 14:53 标题: 回复 29楼 的帖子
共享文件的绝对路径跟共享名不是同一个概念,你先到172.19.103.70上运行net share命令看看结果吧。
作者: lazygc520 时间: 2009-7-30 15:02
我只能连接到那个ip地址。没法在那台机器上敲net share命令。。。
作者: Batcher 时间: 2009-7-30 18:06 标题: 回复 31楼 的帖子
你接触不到那台物理机?为什么呢?
作者: keen 时间: 2009-7-30 18:59 标题: 回复 29楼 的帖子
在IP前加上\\- net use z: \\172.19.103.70\d$\P6502-01\20090729 "aaa111~~" /user:cnsz\sz.tdbi
- start z:
复制代码
还有要注意30楼提出的注意点。
作者: lazygc520 时间: 2009-7-31 08:40
我的代码如下:
- @echo off
- >"%tmp%\MyDel.vbs" echo dt=date()-1
- >>"%tmp%\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^& day(dt),2)
- >>"%tmp%\MyDel.vbs" echo wscript.echo s
- for /f %%a in ('cscript /nologo "%tmp%\MyDel.vbs"') do set yesterday=%%a
- net use z: \\172.19.103.70\d$\P6502-01\%yesterday% "aaa111~~" /user:cnsz\sz.tdbi
- start z:
- copy z:\*.jpg E:\linux
复制代码
请问为什么不能获取%yesterday%的文件信息?
-
-
- C:\Documents and Settings\Admin\My Documents>echo wscript.echo s 1>>"C:\DOCUME~
- \Admin\LOCALS~1\Temp\MyDel.vbs"
- C:\Documents and Settings\Admin\My Documents>for /F %a in ('cscript /nologo "C:
- DOCUME~1\Admin\LOCALS~1\Temp\MyDel.vbs"') do set yesterday=%a
- 'cscript' 不是内部或外部命令,也不是可运行的程序
- 或批处理文件。
- C:\Documents and Settings\Admin\My Documents>net use z: \\172.19.103.70\d$\P650
- -01\ "aaa111~~" /user:cnsz\sz.tdbi
- 'net' 不是内部或外部命令,也不是可运行的程序
- 或批处理文件。
- C:\Documents and Settings\Admin\My Documents>start z:
- C:\Documents and Settings\Admin\My Documents>copy z:\*.jpg E:\
- z:\3f66d8333a467263a746a931efea6.jpg
- 已复制 1 个文件。
- C:\Documents and Settings\Admin\My Documents>pause
- 请按任意键继续. . .
复制代码
其中获取的那个文件的文件夹是20090729的。
[ 本帖最后由 lazygc520 于 2009-7-31 09:19 编辑 ]
作者: keen 时间: 2009-7-31 11:14 标题: 回复 34楼 的帖子
从你测试来看,连net都不是内部或外部命令,如此错误,可能是你的环境变量被更改了,可以在cmd中set path一下,看一下环境变量。至少应该有这三项:- Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
复制代码
作者: lazygc520 时间: 2009-7-31 12:14
这些项都有。主要是%yesterday%的文件信息的获取问题
作者: Batcher 时间: 2009-7-31 12:22 标题: 回复 36楼 的帖子
归根结底还是环境变量的问题,cscript命令都没能执行,自然取不到昨天的日期了。
作者: lazygc520 时间: 2009-7-31 12:52
应该都有那些环境变量啊。请看看是什么问题?- C:\Documents and Settings\Admin>set path
- Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\A
- I Technologies\ATI.ACE\Core-Static;c:\Program Files\Microsoft SQL Server\90\Too
- s\binn\;C:\Program Files\StormII\Codec;C:\Program Files\StormII;D:\AppServ\Apac
- e2.2\bin;D:\AppServ\php5;D:\AppServ\MySQL\bin
- PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
复制代码
作者: lazygc520 时间: 2009-7-31 13:04
我试了下,好像不是环境变量的问题吧?
代码稍作了改动:- >"%tmp%\MyDel.vbs" echo dt=date()-1
- >>"%tmp%\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^&
-
- day(dt),2)
- >>"%tmp%\MyDel.vbs" echo wscript.echo s
- for /f %%a in ('cscript /nologo "%tmp%\MyDel.vbs"') do set yesterday=%%a
- rem 将set path放到了下面
- set path=E:\
- net use z: \\172.19.103.70\d$\P6502-01\%yesterday% "aaa111~~" /user:cnsz\sz.tdbi
- start z:
- copy z:\*.jpg %path%
- pause
复制代码
执行结果:- D:\batch>echo dt=date()-1 1>"C:\DOCUME~1\Admin\LOCALS~1\Temp\MyDel.vbs"
-
- D:\batch>echo s=right(year(dt),4) & right("0" & month(dt),2) & right("0" & day(d
- t),2) 1>>"C:\DOCUME~1\Admin\LOCALS~1\Temp\MyDel.vbs"
-
- D:\batch>echo wscript.echo s 1>>"C:\DOCUME~1\Admin\LOCALS~1\Temp\MyDel.vbs"
-
- D:\batch>for /F %a in ('cscript /nologo "C:\DOCUME~1\Admin\LOCALS~1\Temp\MyDel.v
- bs"') do set yesterday=%a
-
- D:\batch>set yesterday=20090730
-
- D:\batch>set path=E:\
-
- D:\batch>net use z: \\172.19.103.70\d$\P6502-01\20090730 "aaa111~~" /user:cnsz\s
- z.tdbi
- 'net' 不是内部或外部命令,也不是可运行的程序
- 或批处理文件。
-
- D:\batch>start z:
-
- D:\batch>copy z:\*.jpg E:\
- z:\3f66d8333a467263a746a931efea6.jpg
- 已复制 1 个文件。
-
- D:\batch>pause
- 请按任意键继续. . .
复制代码
日期是获取了,但是不是获取的该日期文件夹中的内容?
作者: lazygc520 时间: 2009-7-31 13:14
唉,最终还是自己搞定了。- >"%tmp%\MyDel.vbs" echo dt=date()-1
- >>"%tmp%\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^&
-
- day(dt),2)
- >>"%tmp%\MyDel.vbs" echo wscript.echo s
- for /f %%a in ('cscript /nologo "%tmp%\MyDel.vbs"') do set yesterday=%%a
- set path=E:\
- net use z: \\172.19.103.70\d$\P6502-01 "aaa111~~" /user:cnsz\sz.tdbi
- start z:
- copy z:\%yesterday%\*.jpg %path%
- pause
复制代码
虽然还是抱错,但是可以执行成功了。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |