Board logo

标题: 怎么样用批处理运行一个目录里面最新的可执行文件? [打印本页]

作者: yishanju     时间: 2007-3-13 03:30    标题: 怎么样用批处理运行一个目录里面最新的可执行文件?

怎么样用批处理运行一个目录里面最新的可执行文件?

不考虑子目录,不用第三方工具,文件名没有规律,^_^看看大家都是怎么实现的
作者: lxmxn     时间: 2007-3-13 03:36
  放在要执行的文件所在的目录中运行,没有测试:
@echo off
for /f "delims=" %%a in ('dir /od/b *.exe') do set name="%%a"
%name%

作者: yishanju     时间: 2007-3-13 03:42
^_^
dir /o:d 才对吧或者 dir /o/d
作者: lxmxn     时间: 2007-3-13 03:46


  Quote:
Originally posted by yishanju at 2007-3-12 14:42:
^_^
dir /o:d 才对吧或者 dir /o/d


  一样的效果,试试就知道了。

作者: yishanju     时间: 2007-3-13 03:49
汗,我看错了
作者: yishanju     时间: 2007-3-13 03:50
^_^如果有文件名中有空格呢...会怎么样?
作者: yishanju     时间: 2007-3-13 03:53
D:\Documents and Settings\Administrator>%name%
'd' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

D:\Documents and Settings\Administrator>
作者: yishanju     时间: 2007-3-13 03:55
for /f "delims=" %%a in ('dir /od/b *.exe') do set name="%%a"
"%name%"
加上引号,如果文件名中有空格,应该也不会出错了吧
作者: yishanju     时间: 2007-3-13 03:59
^_^ 想起一个问题,如果把这个批处理放到要运行的可执行程序的目录里边,那个这个批处就变成目录里最新的文件了

这样应该会造成死循环
作者: chainliq     时间: 2007-3-13 04:01
for /f "delims=" %%a in ('dir /od/b *.exe') do set name="%%a"
%name%
path %name%
start %name%
这样可能也行,没试过哈```
作者: lxmxn     时间: 2007-3-13 04:04


  Quote:
Originally posted by yishanju at 2007-3-12 14:59:
^_^ 想起一个问题,如果把这个批处理放到要运行的可执行程序的目录里边,那个这个批处就变成目录里最新的文件了

这样应该会造成死循环


  Re yishanju:
  
  应该不会造成死循环,因为此批处理搜索的只是可执行文件(*.exe),而并非是批处理文件(*.bat、*.cmd),运行之后执行的也就不可能是批处理;

  对于加上引号,是有必要的,防止可执行文件名含有空格导致运行可执行文件出错,是我疏忽了。

作者: yishanju     时间: 2007-3-13 04:10
应该不会造成死循环,因为此批处理搜索的只是可执行文件(*.exe),而并非是批处理文件(*.bat、*.cmd),运行之后执行的也就不可能是批处理;
^_^ 嗯,我想像的时候把.exe 去掉了
作者: yishanju     时间: 2007-3-13 04:56
for /f "delims=" %%a in ('dir /od/b *.exe') do set name="%%a"
start "f:\tem%name%"
应该像这样加上start 才行.不然,底下的代码就有可能不执行了,
作者: leton     时间: 2007-3-13 06:53
楼主好像是要实现,智能判断目录最新可执行文件。

挺有意思,有空研究一下,前期思路:

通过把文件信息输出到 log.txt(信息收集)
然后导入 log.txt 进行判断(那个文件为最新执行文件)然后执行

不知道思路对不.
作者: everest79     时间: 2007-3-13 07:05
dir /t:c /o:d  新建时间排序
dir /t:a /o:d  访问时间排序
dir /t:w /o:d 修改时间排序
lxmxn的好方法,原来都没注意过
作者: zhoushijay     时间: 2007-3-13 07:28

@echo off
for /f "delims=" %%a in ('dir /od/b *.exe') do set name="%%a"
%name%
2楼这个已经可以实现了,把最新的文件排在最后,利用set的重复赋值的特性,当for语句执行完后最后赋予name的值就是最新的文件路径,好聪明的想法,换成我一时还反映不过来呢,大脑内存不足,呵呵

[ Last edited by zhoushijay on 2007-3-12 at 06:29 PM ]
作者: yishanju     时间: 2007-3-13 14:23


  Quote:
Originally posted by leton at 2007-3-13 06:53:
楼主好像是要实现,智能判断目录最新可执行文件。

挺有意思,有空研究一下,前期思路:

通过把文件信息输出到 log.txt(信息收集)
然后导入 ...

:D 可以不用输入log.txt里,^_^看代码了没

楼主好像是要实现,智能判断目录最新可执行文件。

是的,这样就不用在程序员更新了程序之后,而得改脚本的代码了

[ Last edited by yishanju on 2007-3-13 at 02:29 PM ]
作者: lxlgfy     时间: 2008-3-3 17:47    标题: 将最后的"%%a"之前后双引号去掉就可以了



  Quote:
Originally posted by lxmxn at 2007-3-13 03:36 AM:
  放在要执行的文件所在的目录中运行,没有测试:
@echo off
for /f "delims=" %%a in ('dir /od/b *.exe') do set name="%%a"
%name%

如下:
@echo off
for /f "delims=" %%a in ('dir /od/b *.exe') do set name=%%a
%name%