![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 04:37 |
共 48,040 主题排行 / 350,125 发帖 / 今日 1 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何使用两个变量? |
| 可打印版本 691 / 8 |
| 第1楼 threesecond | 发表于 2008-01-09 12:38 |
| 新手上路 发帖 4 积分 10 | |
|
如何使用两个变量? 我有一个文字文文件 file_list.dat 范例如下
http://download.microsoft.com/download/5/b/e/5beaf800-bbbc-4078-a56b-d2dba58dbf0c/WindowsXP-KBxxxxxxxx.exe http://download.microsoft.com/download/b/8/0/b80e4fc4-eafb-4aa7-b18b-e77b33fc3074/WindowsXP-KB xxxxxxxx.exe http://download.microsoft.com/download/2/e/0/2e0f0bf9-6eed-41e1-8279-c3ba6c1d68a1/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 ] |
|
| 第2楼 abcd | 发表于 2008-01-09 12:41 |
| 银牌会员 发帖 739 积分 1,436 | |
|
是提取这个??WindowsXP-KB xxxxxxxx-exe
还是这个xxxxxxxx-exe |
|
| 第3楼 threesecond | 发表于 2008-01-09 12:44 |
| 新手上路 发帖 4 积分 10 | |
|
%file_name% 需提取WindowsXP-KBxxxxxxxx.exe
%file_url% 则提取整个 URL (含WindowsXP-KBxxxxxxxx.exe) 以上两个提取已经以 echo 测试 ok,但合并使用在下面的 if exit 就出问题了。 |
|
| 第4楼 chenall | 发表于 2008-01-09 12:47 |
| 银牌会员 发帖 469 积分 1,276 来自 福建泉州 | |
|
没有说清楚.
::撷取网址中的最后一个文件名 是要每个网址后面的文件名还是要列表中的最后一个文件名. 按你的 FOR /F "tokens=8 delims=/ " %%a in (file_list.dat) set file_name=%%a 应该是要每个网的最后一个文件名,但是这个语句的结果是取列表的最后一个文件名. 我按照我的理解给你改一个,不知是否可用. 刚发完,返回就发现已经有好几个回贴了,可以结合5楼的修改一下. 是个不错的方法.
[ Last edited by chenall on 2008-1-9 at 12:51 PM ] |
|
| 第5楼 abcd | 发表于 2008-01-09 12:48 |
| 银牌会员 发帖 739 积分 1,436 | |
|
@echo off
for /f "delims=" %%i in (file_list.dat) do ( if not exist "%%~nxi" wget "%%i" ) |
|
| 第6楼 threesecond | 发表于 2008-01-09 15:13 |
| 新手上路 发帖 4 积分 10 | |
Originally posted by chenall at 2008-1-9 12:47 PM: 我要提取每一个网址最后的文件名 我想您理解我的意思了,但仍有些小问题, 第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 ] |
|
| 第7楼 lxmxn | 发表于 2008-01-09 15:45 |
| 版主 发帖 4,938 积分 11,386 | |
|
试试这个,没有测试: |
|
| 第8楼 threesecond | 发表于 2008-01-09 17:12 |
| 新手上路 发帖 4 积分 10 | |
|
试用七楼的办法,稍修改一下就成功了,
果然还是需要SetLocal EnableDelayedExpansion 才能成功哪~~ |
|
| 第9楼 zh159 | 发表于 2008-01-09 17:17 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
7 楼应该可以改为:
自己测试 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |