中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 如何使用两个变量? 上一主题 | 下一主题
threesecond
新手上路





积分 10
发帖 4
注册 2008-1-9
状态 离线
『楼 主』:  如何使用两个变量?

我有一个文字文文件 file_list.dat 范例如下
http://download.microsoft.com/do ... wsXP-KBxxxxxxxx.exe
http://download.microsoft.com/do ... fc3074/WindowsXP-KB xxxxxxxx.exe
http://download.microsoft.com/do ... 1d68a1/WindowsXP-KB xxxxxxxx.exe

我想做的批处理如下:
::撷取网址中的最后一个文件名
FOR /F "tokens=8 delims=/ " %%a in (file_list.dat) do set file_name=%%a
::撷取整列网址
FOR /F %%b in (file_list.dat) do set file_url=%%b
::然后我想判断文件是否存在,若不存在则下载,且要 for ….do 循环处理多列,
if exit % file_name % (
        xcopy %file_name% Folder\ /y
        ) else (
        wget %file_url%
)
pause
exit

但始终不成功,请各位帮我看看该如何写?

[ Last edited by threesecond on 2008-1-9 at 12:41 PM ]

2008-1-9 12:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 2 楼』:  

是提取这个??WindowsXP-KB xxxxxxxx-exe

还是这个xxxxxxxx-exe

2008-1-9 12:41
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
threesecond
新手上路





积分 10
发帖 4
注册 2008-1-9
状态 离线
『第 3 楼』:  

%file_name% 需提取WindowsXP-KBxxxxxxxx.exe
%file_url% 则提取整个 URL (含WindowsXP-KBxxxxxxxx.exe)
以上两个提取已经以 echo 测试 ok,但合并使用在下面的 if exit 就出问题了。

2008-1-9 12:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
chenall
银牌会员




积分 1276
发帖 469
注册 2002-12-23
来自 福建泉州
状态 离线
『第 4 楼』:  

没有说清楚.
::撷取网址中的最后一个文件名
是要每个网址后面的文件名还是要列表中的最后一个文件名.
按你的
FOR /F "tokens=8 delims=/ " %%a in (file_list.dat) set file_name=%%a
应该是要每个网的最后一个文件名,但是这个语句的结果是取列表的最后一个文件名.

我按照我的理解给你改一个,不知是否可用.

刚发完,返回就发现已经有好几个回贴了,可以结合5楼的修改一下.
是个不错的方法.

  Quote:


  1. FOR /F %%b in (file_list.dat) (
  2.         set file_url=%%b
  3.         call :check
  4. )
  5. goto :eof

  6. :check
  7. if not defined file_url goto :eof
  8. FOR /F "tokens=8 delims=/ " %%a in (%file_url%) set file_name=%%a
  9. if exit %file_name% (
  10.         xcopy %file_name% Folder\ /y
  11.         ) else (
  12.         wget %file_url%
  13. )
  14. goto :eof
        chenall 发表于:  2008-01-09  09:25

[ Last edited by chenall on 2008-1-9 at 12:51 PM ]



QQ:366840202
http://chenall.net
2008-1-9 12:47
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (366840202)  编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 5 楼』:  

@echo off
for /f "delims=" %%i in (file_list.dat) do (
   if not exist "%%~nxi" wget "%%i"
)

2008-1-9 12:48
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
threesecond
新手上路





积分 10
发帖 4
注册 2008-1-9
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by chenall at 2008-1-9 12:47 PM:
没有说清楚.
::撷取网址中的最后一个文件名
是要每个网址后面的文件名还是要列表中的最后一个文件名.
按你的
FOR /F "tokens=8 delims=/ " %%a in ...

  Quote:
FOR /F %%b in (file_list.dat) (
        set file_url=%%b
        call :check
)
goto :eof


:check
if not defined file_url goto :eof
FOR /F "tokens=8 delims=/ " %%a in (%file_url%) set file_name=%%a
if exit %file_name% (
        xcopy %file_name% Folder\ /y
        ) else (
        wget %file_url%
)
goto :eof


我要提取每一个网址最后的文件名
我想您理解我的意思了,但仍有些小问题,
第1和第10列应该加上 do 才能运行 set 是吧?
我修改了后,运行到第10列,%file_name% 却变成了 URL 网址了,而非文件名,

FOR /F "tokens=8 delims=/ " %%a in (%file_url%) set file_name=%%a
这行的in (%file_url%) 会变成找不到文件,
(将网址当作文件名了,当然找不到了)
该怎么办?

[ Last edited by threesecond on 2008-1-9 at 03:22 PM ]

2008-1-9 15:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 7 楼』:  试试这个,没有测试:


@echo off & SetLocal EnableDelayedExpansion
for /f "delims=" %%a in (file_list.dat) do (
    set filename=%%~nxa
    if not exist "!filename!" (wget -q "%%~a") else (copy /y "!filename!" folder)
)


2008-1-9 15:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
threesecond
新手上路





积分 10
发帖 4
注册 2008-1-9
状态 离线
『第 8 楼』:  

试用七楼的办法,稍修改一下就成功了,
果然还是需要SetLocal EnableDelayedExpansion 才能成功哪~~

2008-1-9 17:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 9 楼』:  

7 楼应该可以改为:
for /f "delims=" %%a in (file_list.dat) do if not exist "%%~nxa" (wget -q "%%~a") else (copy /y "%%~nxa" folder)
自己测试



2008-1-9 17:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: