中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 如何得知某个文件的路径? 上一主题 | 下一主题
hrduan268
初级用户





积分 72
发帖 27
注册 2007-4-2
状态 离线
『楼 主』:  如何得知某个文件的路径?

假如光盘E:\SIMPCHIN\WIN2000\ADV_SRV\I386下有一个叫sndvol32.ex_的文件,现在的问题是只知道光盘E中确实是有sndvol32.ex_,但不知sndvol32.ex_的具体路径,在DOS下如何得知sndvol32.ex_的具体路径?
    如果用path_snd表示E:\SIMPCHIN\WIN2000\ADV_SRV\I386,我要用到下面的命令:
    expand  path_snd\sndvol32.ex_   c:\windows\system32\sndvol32.exe
    值得注意的是sndvol32.ex_的路径可能有多个,顺便告诉大家E盘是windows20
00的安装盘。

[ Last edited by hrduan268 on 2007-4-21 at 10:02 AM ]

2007-4-21 22:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  


@echo off
for /f "delims=" %%a in ('dir /s/b/a-d E:\sndvol32.ex_') do if exist "%%a" expand "%%a" c:\windows\system32\sndvol32.exe


2007-4-22 04:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hrduan268
初级用户





积分 72
发帖 27
注册 2007-4-2
状态 离线
『第 3 楼』:  

我在CMD中试了一下,提示"此时不应有%%a",还是不行呀

2007-4-22 08:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hrduan268
初级用户





积分 72
发帖 27
注册 2007-4-2
状态 离线
『第 4 楼』:  

可以了,我把下面的内容放到1.txt中:
@echo on                       
for /f "delims=" %%a in ('dir /s/b/a-d G:\sndvol32.ex_') do if exist "%%a" expand "%%a" c:\sndvol32.exe
pause
然后把1.txt改为1.bat,成功了!多谢lxmxn兄!

2007-4-22 08:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hrduan268
初级用户





积分 72
发帖 27
注册 2007-4-2
状态 离线
『第 5 楼』:  

注意,我是在另一台机试的,因为原来哪台机是Ghost xp版本,不支持*.bat文件,E盘改为G盘,我不想覆盖原来的c:\windows\system32\sndvol32.exe,所以改为c:\下,这句话有的地方不是很明,我再想想,想好后再来问.

2007-4-22 08:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hrduan268
初级用户





积分 72
发帖 27
注册 2007-4-2
状态 离线
『第 6 楼』:  

"delims=" %%a表示什么意思?
'dir /s/b/a-d G:\sndvol32.ex_'又怎么理解,这句话从整体上理解我不是很明,从局部上理解有些参数也不是很明,用引号有什么用?

2007-4-22 09:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 7 楼』:  

Re hrduan268:

1、3楼的问题是:在命令提示符里面运行for命令,只需要一个%来引导变量即可,而不是像在批处理文件里面需要两个%(即%%)来引导变量,这个是个规定,需要记住的。

2、6楼的问题:"delims="表示不以任何字符为分隔符,意即取In后面括号中的一行的所有内容,而不是以空格为分割的内容;'dir /s/b/a-d G:\sndvol32.ex_'中加单引号是因为'dir /s/b/a-d G:\sndvol32.ex_'是一个命令,在for的in后面的()中,命令需要用单引号括起来,这也是for命令的格式规定的。

2007-4-22 12:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: