![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-17 18:47 |
共 47,814 主题排行 / 349,907 发帖 / 今日 4 篇 / 48,259 会员排行 |
| DOS疑难解答 & 问题讨论 (解答室) » [再问]如何得到某文件夹下名字一部分会改变的文件名? |
| 可打印版本 1,017 / 10 |
| 第1楼 pillow | 发表于 2005-12-08 18:40 |
| 初级用户 发帖 82 积分 196 | |
|
[再问]如何得到某文件夹下名字一部分会改变的文件名? 我有一种情况
contact目录下会存放着一个 contact051107.xls的文件,是电话表 但它会不定期的更新,比如变成 contact051120.xls 我想用Excel打开这个文件 每次进入这个目录,得到这个文件名前位固定是“contact"的全名 并赋给一个变量,比如 openit 再"%programfiles%\Microsoft Office\Excel.exe" %openit% 如果不引用外部命令而只用命令行中的命令,我可以怎么样做到? 我的运行环境是2000或是XP 请各位指点一二,不胜感激! [ Last edited by pillow on 2006-1-4 at 11:38 ] |
|
| 第2楼 JonePeng | 发表于 2005-12-09 20:36 |
| 金牌会员 发帖 1,883 积分 4,562 来自 广东广州 | |
|
如果确实是只有一个XLS文件的话,一条命令就搞定:
for %a in (contact*.xls) do start %a 如果将此命令写进一个批处理文件,就作一点点改动: @for %%a in (contact*.xls) do start %%a [ Last edited by JonePeng on 2005-12-9 at 20:38 ] |
|
| 第3楼 Climbing | 发表于 2005-12-10 12:10 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
Jone的方法很好啊,不用第三方工具,我也没有什么更好的办法。
|
|
| 第4楼 JonePeng | 发表于 2005-12-10 17:53 |
| 金牌会员 发帖 1,883 积分 4,562 来自 广东广州 | |
|
好久不见了,Climbing大哥!谢谢夸奖。
![]() |
|
| 第5楼 willsort | 发表于 2005-12-11 22:22 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re pillow:
如果存在多个文件,需要使用 for /f,下面是命令行下设置变量的代码: for /f "delims=" %f in ('dir contact*.xls /b /od') do set openit=%f 当然,也可如 JonePeng 兄般直接打开相应文件,不过需要写入到批处理中: for /f "delims=" %%f in ('dir contact*.xls /b /o-d') do start %%f & goto:EOF 以上代码,未经测试,请调试无误后,谨慎使用 |
|
| 第6楼 pillow | 发表于 2005-12-12 11:12 |
| 初级用户 发帖 82 积分 196 | |
|
哇!灵光!!
这之前对FOR几乎是一无所知,这个问题已经困扰我好几天了,太谢谢啦各位啦! 又学会个新知识点! |
|
| 第7楼 pillow | 发表于 2005-12-26 17:45 |
| 初级用户 发帖 82 积分 196 | |
|
看来这个问题我没有彻底弄明白呢,最近在用的时候又发生了新的问题
goto:EOF 这个 EOF是什么意思呢?这个不懂… [ Last edited by pillow on 2006-1-4 at 11:42 ] |
|
| 第8楼 pillow | 发表于 2006-01-04 11:38 |
| 初级用户 发帖 82 积分 196 | |
|
新問題,由於局域網內同一時間可能會有多人打開這個文件,而第二,三或N個人打開此XLS文件时,会提示文件已经被其它用户打开,是否作为只读查看或是稍后再打开。
所以我现在想将这个XLS文件直接拷到用户桌面上,再打开桌面上的这个文件, 现在我能通过JonePeng在二楼中提供的方法来COPY到桌面上, 所以问题是,我能不能在拷完这个文件的同时就直接得到这个文件的名字然后start it? 如果CMD不行,那么可以加上别的什么可以在2000和XP下执行的小程序吗? 如果再DIR最新文件,再用for token之类的,实在是好麻烦的 問題2:for 語句裏是不是可以用 do (………………) & (…………)這個樣的形式? [ Last edited by pillow on 2006-1-4 at 15:18 ] |
|
| 第9楼 pillow | 发表于 2006-01-04 15:22 |
| 初级用户 发帖 82 积分 196 | |
|
自己找到了個方法
先for %%a in (contact*.xls) do set name=%%a 再copy %name% 至目的目錄 請問還有其它更好的方法嗎?比如用&那樣的方式 ? |
|
| 第10楼 willsort | 发表于 2006-01-04 16:11 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re pillow:
for 中允许使用 do (statement1) & (statement2) & ... 的语法,我在5楼中的第二行代码便是类似的实现。 請問還有其它更好的方法嗎?比如用&那樣的方式 下面还是批处理的方案,将它保存至批处理中,并置于 contact*.xls 目录下,然后点击运行即可打开对应 excel 文档。 for /f "delims=" %%f in ('dir contact*.xls /b /o-n') do copy "%%f" "dest_path\." && start "dest_path\%%~nxf" && goto:EOF 或者将批处理放在各个用户的目标目录下,批处理内容为: for /f "delims=" %%f in ('dir src_path\contact*.xls /b /o-n') do copy "%%f" && start "%%~nxf" && goto:EOF 至于goto:EOF ,:EOF 为批处理文件缺省的结束标签,goto:EOF 即为在for循环执行一次,找到最新的文件并作出处理后,直接跳出。 |
|
| 第11楼 pillow | 发表于 2006-01-04 17:40 |
| 初级用户 发帖 82 积分 196 | |
|
這樣啊……懂了,用&用兩個,我以前誤以為是要用 () & () 這樣的形式呢,謝啦!
您的新方法中是使用了擴充變量到文件名吧?有了新思路了!謝謝! |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |