|
pillow
初级用户
积分 196
发帖 82
注册 2005-9-26
状态 离线
|
『楼 主』:
[再问]如何得到某文件夹下名字一部分会改变的文件名?
我有一种情况
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 ]
|
|
2005-12-8 18:40 |
|
|
JonePeng
金牌会员
D◎$ Fαп
积分 4562
发帖 1883
注册 2004-1-19 来自 广东广州
状态 离线
|
『第
2 楼』:
如果确实是只有一个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 ]
|
----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
|
|
2005-12-9 20:36 |
|
|
Climbing
铂金会员
网络独行侠
积分 6962
发帖 2753
注册 2003-4-16 来自 河北保定
状态 离线
|
『第
3 楼』:
Jone的方法很好啊,不用第三方工具,我也没有什么更好的办法。
|
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
|
|
2005-12-10 12:10 |
|
|
JonePeng
金牌会员
D◎$ Fαп
积分 4562
发帖 1883
注册 2004-1-19 来自 广东广州
状态 离线
|
『第
4 楼』:
好久不见了,Climbing大哥!谢谢夸奖。
|
----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
|
|
2005-12-10 17:53 |
|
|
willsort
元老会员
Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
5 楼』:
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
以上代码,未经测试,请调试无误后,谨慎使用
|
※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2005-12-11 22:22 |
|
|
pillow
初级用户
积分 196
发帖 82
注册 2005-9-26
状态 离线
|
『第
6 楼』:
哇!灵光!!
这之前对FOR几乎是一无所知,这个问题已经困扰我好几天了,太谢谢啦各位啦!
又学会个新知识点!
|
|
2005-12-12 11:12 |
|
|
pillow
初级用户
积分 196
发帖 82
注册 2005-9-26
状态 离线
|
『第
7 楼』:
看来这个问题我没有彻底弄明白呢,最近在用的时候又发生了新的问题
goto:EOF 这个 EOF是什么意思呢?这个不懂…
[ Last edited by pillow on 2006-1-4 at 11:42 ]
|
|
2005-12-26 17:45 |
|
|
pillow
初级用户
积分 196
发帖 82
注册 2005-9-26
状态 离线
|
『第
8 楼』:
新問題,由於局域網內同一時間可能會有多人打開這個文件,而第二,三或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 ]
|
|
2006-1-4 11:38 |
|
|
pillow
初级用户
积分 196
发帖 82
注册 2005-9-26
状态 离线
|
『第
9 楼』:
自己找到了個方法
先for %%a in (contact*.xls) do set name=%%a
再copy %name% 至目的目錄
請問還有其它更好的方法嗎?比如用&那樣的方式 ?
|
|
2006-1-4 15:22 |
|
|
willsort
元老会员
Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
10 楼』:
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循环执行一次,找到最新的文件并作出处理后,直接跳出。
|
※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2006-1-4 16:11 |
|
|
pillow
初级用户
积分 196
发帖 82
注册 2005-9-26
状态 离线
|
『第
11 楼』:
這樣啊……懂了,用&用兩個,我以前誤以為是要用 () & () 這樣的形式呢,謝啦!
您的新方法中是使用了擴充變量到文件名吧?有了新思路了!謝謝!
|
|
2006-1-4 17:40 |
|