中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 09:07
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎么样用批处理运行一个目录里面最新的可执行文件?
楼 主 怎么样用批处理运行一个目录里面最新的可执行文件? 发表于 2007-03-13 03:30 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
UID 55770
状态 离线
怎么样用批处理运行一个目录里面最新的可执行文件?

不考虑子目录,不用第三方工具,文件名没有规律,^_^看看大家都是怎么实现的
2 发表于 2007-03-13 03:36 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线
  放在要执行的文件所在的目录中运行,没有测试:

@echo off
for /f "delims=" %%a in ('dir /od/b *.exe') do set name="%%a"
%name%
3 发表于 2007-03-13 03:42 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
UID 55770
状态 离线
^_^
dir /o:d 才对吧或者 dir /o/d
4 发表于 2007-03-13 03:46 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线
Originally posted by yishanju at 2007-3-12 14:42:
^_^
dir /o:d 才对吧或者 dir /o/d


  一样的效果,试试就知道了。
5 发表于 2007-03-13 03:49 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
UID 55770
状态 离线
汗,我看错了
6 发表于 2007-03-13 03:50 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
UID 55770
状态 离线
^_^如果有文件名中有空格呢...会怎么样?
7 发表于 2007-03-13 03:53 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
UID 55770
状态 离线
D:\Documents and Settings\Administrator>%name%
'd' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

D:\Documents and Settings\Administrator>
8 发表于 2007-03-13 03:55 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
UID 55770
状态 离线
for /f "delims=" %%a in ('dir /od/b *.exe') do set name="%%a"
"%name%"
加上引号,如果文件名中有空格,应该也不会出错了吧
9 发表于 2007-03-13 03:59 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
UID 55770
状态 离线
^_^ 想起一个问题,如果把这个批处理放到要运行的可执行程序的目录里边,那个这个批处就变成目录里最新的文件了

这样应该会造成死循环
10 发表于 2007-03-13 04:01 ·  中国 广西 贵港 电信
高级用户
★★
学无尽止
积分 635
发帖 244
注册 2006-04-15 05:07
UID 53857
性别 男
来自 广西贵港
状态 离线
for /f "delims=" %%a in ('dir /od/b *.exe') do set name="%%a"
%name%
path %name%
start %name%
这样可能也行,没试过哈```
学无尽止
11 发表于 2007-03-13 04:04 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线
Originally posted by yishanju at 2007-3-12 14:59:
^_^ 想起一个问题,如果把这个批处理放到要运行的可执行程序的目录里边,那个这个批处就变成目录里最新的文件了

这样应该会造成死循环


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

  对于加上引号,是有必要的,防止可执行文件名含有空格导致运行可执行文件出错,是我疏忽了。
12 发表于 2007-03-13 04:10 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
UID 55770
状态 离线
应该不会造成死循环,因为此批处理搜索的只是可执行文件(*.exe),而并非是批处理文件(*.bat、*.cmd),运行之后执行的也就不可能是批处理;
^_^ 嗯,我想像的时候把.exe 去掉了
13 发表于 2007-03-13 04:56 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
UID 55770
状态 离线
for /f "delims=" %%a in ('dir /od/b *.exe') do set name="%%a"
start "f:\tem%name%"
应该像这样加上start 才行.不然,底下的代码就有可能不执行了,
14 发表于 2007-03-13 06:53 ·  中国 广东 广州 海珠区 电信
初级用户
★★
积分 170
发帖 72
注册 2007-03-11 22:16
UID 81435
性别 男
状态 离线
楼主好像是要实现,智能判断目录最新可执行文件。

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

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

不知道思路对不.
15 发表于 2007-03-13 07:05 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
UID 74552
性别 男
状态 离线
dir /t:c /o:d 新建时间排序
dir /t:a /o:d 访问时间排序
dir /t:w /o:d 修改时间排序
lxmxn的好方法,原来都没注意过
论坛跳转: