标题: [再问]如何得到某文件夹下名字一部分会改变的文件名?
[打印本页]
作者: pillow
时间: 2005-12-8 18:40
标题: [再问]如何得到某文件夹下名字一部分会改变的文件名?
我有一种情况
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 ]
作者: JonePeng
时间: 2005-12-9 20:36
如果确实是只有一个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 ]
作者: Climbing
时间: 2005-12-10 12:10
Jone的方法很好啊,不用第三方工具,我也没有什么更好的办法。
作者: JonePeng
时间: 2005-12-10 17:53
好久不见了,Climbing大哥!谢谢夸奖。

作者: willsort
时间: 2005-12-11 22:22
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
以上代码,未经测试,请调试无误后,谨慎使用
作者: pillow
时间: 2005-12-12 11:12
哇!灵光!!
这之前对FOR几乎是一无所知,这个问题已经困扰我好几天了,太谢谢啦各位啦!
又学会个新知识点!
作者: pillow
时间: 2005-12-26 17:45
看来这个问题我没有彻底弄明白呢,最近在用的时候又发生了新的问题
goto:EOF 这个 EOF是什么意思呢?这个不懂…
Last edited by pillow on 2006-1-4 at 11:42 ]
作者: pillow
时间: 2006-1-4 11:38
新問題,由於局域網內同一時間可能會有多人打開這個文件,而第二,三或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 ]
作者: pillow
时间: 2006-1-4 15:22
自己找到了個方法
先for %%a in (contact*.xls) do set name=%%a
再copy %name% 至目的目錄
請問還有其它更好的方法嗎?比如用&那樣的方式 ?
作者: willsort
时间: 2006-1-4 16:11
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循环执行一次,找到最新的文件并作出处理后,直接跳出。
作者: pillow
时间: 2006-1-4 17:40
這樣啊……懂了,用&用兩個,我以前誤以為是要用 () & () 這樣的形式呢,謝啦!
您的新方法中是使用了擴充變量到文件名吧?有了新思路了!謝謝!