Board logo

标题: [文件操作] [已解决]从远程共享下载指定日期之前指定后缀名的文件的批处理 [打印本页]

作者: lazygc520    时间: 2009-7-21 17:05     标题: [已解决]从远程共享下载指定日期之前指定后缀名的文件的批处理

现在我想要从FTP服务器上download命名后缀为.bmp的文件。\\172.19.103.70\d$\P6502-01\20090720拷贝到我的电脑E:\Wangxc

我的代码如下:
  1. @echo off
  2. set DownFolder=E:\pic
  3. >"%tmp%\MyDel.vbs" echo dt=date()-1
  4. >>"%tmp%\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^& day(dt),2)
  5. >>"%tmp%\MyDel.vbs" echo wscript.echo s
  6. for /f %%a in ('cscript /nologo "%tmp%\MyDel.vbs"') do set yesterday=%%a
  7. set FtpFile=%temp%\TempAcc.txt
  8. >>"%FtpFile%" echo cnsz\sz.tdbi
  9. >>"%FtpFile%" echo aaa111~~
  10. >>"%FtpFile%" echo bin
  11. >>"%FtpFile%" echo cd \\172.19.103.70\d$\P6502-01\%yesterday%
  12. >>"%FtpFile%" echo mget *.bmp
  13. >>"%FtpFile%" echo bye
  14. start ftp -v -i -s:"%FtpFile%" 172.19.103.70
  15. copy /y "%FtpFile%\*.*" "%DownFolder%"
  16. goto :eof
复制代码
但是执行不成功,请问是什么原因?

[ 本帖最后由 lazygc520 于 2009-7-31 13:18 编辑 ]
作者: lazygc520    时间: 2009-7-21 17:17

TempAcc.txt的内容:
  1. sz.tdbi
  2. aaa111~~
  3. bin
  4. cd \\172.19.103.70\d$\P6502-01\20090720
  5. mget *.bmp
  6. bye
  7. sz.tdbi
  8. aaa111~~
  9. bin
  10. cd \\172.19.103.70\d$\P6502-01\20090720
  11. mget *.bmp
  12. bye
  13. sz.tdbi
  14. aaa111~~
  15. bin
  16. cd \\172.19.103.70\d$\P6502-01\20090720
  17. mget *.bmp
  18. bye
  19. sz.tdbi
  20. aaa111~~
  21. bin
  22. cd \\172.19.103.70\d$\P6502-01\20090720
  23. mget *.bmp
  24. bye
  25. cnsz\sz.tdbi
  26. aaa111~~
  27. bin
  28. cd \\172.19.103.70\d$\P6502-01\20090720
  29. mget *.bmp
  30. bye
  31. cnsz\sz.tdbi
  32. aaa111~~
  33. bin
  34. cd \\172.19.103.70\d$\P6502-01\20090720
  35. mget *.bmp
  36. bye
  37. cnsz\sz.tdbi
  38. aaa111~~
  39. bin
  40. cd \\172.19.103.70\d$\P6502-01\20090720
  41. mget *.bmp
  42. bye
  43. cnsz\sz.tdbi
  44. aaa111~~
  45. bin
  46. cd \\172.19.103.70\d$\P6502-01\20090720
  47. mget *.bmp
  48. bye
  49. cnsz\sz.tdbi
  50. aaa111~~
  51. bin
  52. cd \\172.19.103.70\d$\P6502-01\20090720
  53. mget *.bmp
  54. bye
  55. cnsz\sz.tdbi
  56. aaa111~~
  57. bin
  58. cd \\172.19.103.70\d$\P6502-01\20090720
  59. mget *.bmp
  60. bye
复制代码

MyVbs的内容:
  1. dt=date()-1
  2. s=right(year(dt),4) & right("0" & month(dt),2) & right("0" & day(dt),2)
  3. 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

  1. 先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

  1. net use z: 172.19.103.70\d$\P6502-01\20090729 "aaa111~~" /user:cnsz\sz.tdbi
  2. 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前加上\\
  1. net use z: \\172.19.103.70\d$\P6502-01\20090729 "aaa111~~" /user:cnsz\sz.tdbi
  2. start z:
复制代码
还有要注意30楼提出的注意点。
作者: lazygc520    时间: 2009-7-31 08:40

我的代码如下:
  1. @echo off
  2. >"%tmp%\MyDel.vbs" echo dt=date()-1
  3. >>"%tmp%\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^& day(dt),2)
  4. >>"%tmp%\MyDel.vbs" echo wscript.echo s
  5. for /f %%a in ('cscript /nologo "%tmp%\MyDel.vbs"') do set yesterday=%%a
  6. net use z: \\172.19.103.70\d$\P6502-01\%yesterday% "aaa111~~" /user:cnsz\sz.tdbi
  7. start z:
  8. copy z:\*.jpg E:\linux
复制代码


请问为什么不能获取%yesterday%的文件信息?
  1. C:\Documents and Settings\Admin\My Documents>echo wscript.echo s 1>>"C:\DOCUME~
  2. \Admin\LOCALS~1\Temp\MyDel.vbs"
  3. C:\Documents and Settings\Admin\My Documents>for /F %a in ('cscript /nologo "C:
  4. DOCUME~1\Admin\LOCALS~1\Temp\MyDel.vbs"') do set yesterday=%a
  5. 'cscript' 不是内部或外部命令,也不是可运行的程序
  6. 或批处理文件。
  7. C:\Documents and Settings\Admin\My Documents>net use z: \\172.19.103.70\d$\P650
  8. -01\ "aaa111~~" /user:cnsz\sz.tdbi
  9. 'net' 不是内部或外部命令,也不是可运行的程序
  10. 或批处理文件。
  11. C:\Documents and Settings\Admin\My Documents>start z:
  12. C:\Documents and Settings\Admin\My Documents>copy z:\*.jpg E:\
  13. z:\3f66d8333a467263a746a931efea6.jpg
  14. 已复制         1 个文件。
  15. C:\Documents and Settings\Admin\My Documents>pause
  16. 请按任意键继续. . .
复制代码

其中获取的那个文件的文件夹是20090729的。

[ 本帖最后由 lazygc520 于 2009-7-31 09:19 编辑 ]
作者: keen    时间: 2009-7-31 11:14     标题: 回复 34楼 的帖子

从你测试来看,连net都不是内部或外部命令,如此错误,可能是你的环境变量被更改了,可以在cmd中set path一下,看一下环境变量。至少应该有这三项:
  1. 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

应该都有那些环境变量啊。请看看是什么问题?
  1. C:\Documents and Settings\Admin>set path
  2. Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\A
  3. I Technologies\ATI.ACE\Core-Static;c:\Program Files\Microsoft SQL Server\90\Too
  4. s\binn\;C:\Program Files\StormII\Codec;C:\Program Files\StormII;D:\AppServ\Apac
  5. e2.2\bin;D:\AppServ\php5;D:\AppServ\MySQL\bin
  6. PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
复制代码

作者: lazygc520    时间: 2009-7-31 13:04

我试了下,好像不是环境变量的问题吧?
代码稍作了改动:
  1. >"%tmp%\MyDel.vbs" echo dt=date()-1
  2. >>"%tmp%\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^&
  3. day(dt),2)
  4. >>"%tmp%\MyDel.vbs" echo wscript.echo s
  5. for /f %%a in ('cscript /nologo "%tmp%\MyDel.vbs"') do set yesterday=%%a
  6. rem 将set path放到了下面
  7. set path=E:\
  8. net use z: \\172.19.103.70\d$\P6502-01\%yesterday% "aaa111~~" /user:cnsz\sz.tdbi
  9. start z:
  10. copy z:\*.jpg %path%
  11. pause
复制代码
执行结果:
  1. D:\batch>echo dt=date()-1 1>"C:\DOCUME~1\Admin\LOCALS~1\Temp\MyDel.vbs"
  2. D:\batch>echo s=right(year(dt),4) & right("0" & month(dt),2) & right("0" & day(d
  3. t),2) 1>>"C:\DOCUME~1\Admin\LOCALS~1\Temp\MyDel.vbs"
  4. D:\batch>echo wscript.echo s 1>>"C:\DOCUME~1\Admin\LOCALS~1\Temp\MyDel.vbs"
  5. D:\batch>for /F %a in ('cscript /nologo "C:\DOCUME~1\Admin\LOCALS~1\Temp\MyDel.v
  6. bs"') do set yesterday=%a
  7. D:\batch>set yesterday=20090730
  8. D:\batch>set path=E:\
  9. D:\batch>net use z: \\172.19.103.70\d$\P6502-01\20090730 "aaa111~~" /user:cnsz\s
  10. z.tdbi
  11. 'net' 不是内部或外部命令,也不是可运行的程序
  12. 或批处理文件。
  13. D:\batch>start z:
  14. D:\batch>copy z:\*.jpg E:\
  15. z:\3f66d8333a467263a746a931efea6.jpg
  16. 已复制         1 个文件。
  17. D:\batch>pause
  18. 请按任意键继续. . .
复制代码
日期是获取了,但是不是获取的该日期文件夹中的内容?
作者: lazygc520    时间: 2009-7-31 13:14

唉,最终还是自己搞定了。
  1. >"%tmp%\MyDel.vbs" echo dt=date()-1
  2. >>"%tmp%\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^&
  3. day(dt),2)
  4. >>"%tmp%\MyDel.vbs" echo wscript.echo s
  5. for /f %%a in ('cscript /nologo "%tmp%\MyDel.vbs"') do set yesterday=%%a
  6. set path=E:\
  7. net use z: \\172.19.103.70\d$\P6502-01 "aaa111~~" /user:cnsz\sz.tdbi
  8. start z:
  9. copy z:\%yesterday%\*.jpg %path%
  10. pause
复制代码
虽然还是抱错,但是可以执行成功了。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2