中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-08 14:14
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 查看当前目录下是否有以s开头的exe文件,如果有则退出 查看 1,869 回复 19
楼 主 查看当前目录下是否有以s开头的exe文件,如果有则退出 发表于 2008-05-11 21:50 ·  中国 河南 郑州 电信
初级用户
★★
积分 123
发帖 62
注册 2008-04-09 16:11
18年会员
UID 115362
性别 男
状态 离线
请至少给出4种以上方法
2 暂时只想到三个: 发表于 2008-05-11 22:29 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
if exist s*.exe goto :eof


for /f "delims=" %%i in ('dir /s /b s*.exe') do set n=1
if defined n goto :eof


echo off
for /f "delims=" %%i in ('dir /s /b *.exe') do call :lp %%~ni
pause>nul&goto :eof
:lp
set a=%1
if "%a:~,1%"=="s" goto :eof


[ Last edited by zw19750516 on 2008-5-11 at 10:50 PM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
wang6542975 +2 2008-05-11 22:59
批处理之家新域名:www.bathome.net
3 再来一个: 发表于 2008-05-11 22:45 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线

for /r %%i in (s*.exe) do set n=1
if defined n goto :eof
批处理之家新域名:www.bathome.net
4 发表于 2008-05-11 22:45 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
for %%a in (*.exe) do echo %%~na|findstr "^s"&&exit/b
5 发表于 2008-05-11 22:46 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
方法简直太多了啊~
6 发表于 2008-05-11 22:49 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
Originally posted by zw19750516 at 2008-5-11 10:45 PM:

for /r %%i in (s*.exe) do set n=1
if defined n goto :eof



/r不是也循环子目录中的文件吗?
7 发表于 2008-05-11 22:53 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
回楼上,yes。

[ Last edited by zw19750516 on 2008-5-11 at 11:10 PM ]
批处理之家新域名:www.bathome.net
8 正解 发表于 2008-05-11 22:55 ·  中国 河南 郑州 电信
初级用户
★★
积分 123
发帖 62
注册 2008-04-09 16:11
18年会员
UID 115362
性别 男
状态 离线
@echo off
dir s*.exe || echo Didn't exist file s*.exe & pause & exit
9 发表于 2008-05-11 22:55 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
Originally posted by zw19750516 at 2008-5-11 10:53 PM:
回楼上,yes。
ps:for %%a in (*.exe) do echo %%~na|findstr "^s"&&exit/b 有误,如:存在123s.exe也会退出。

[ Last edited by zw19750516 on 2008-5-11 at 10:54 PM ]


findstr "^s" 中"^"不是仅匹配行首的s吗?~
10 发表于 2008-05-11 22:58 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by wang6542975 at 2008-5-11 22:55:
@echo off
dir s*.exe || echo Didn't exist file s*.exe & pause & exit

非正解,如存在子目录则。。。
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
wang6542975 +1 2008-05-11 23:04
批处理之家新域名:www.bathome.net
11 发表于 2008-05-11 23:04 ·  中国 河南 郑州 电信
初级用户
★★
积分 123
发帖 62
注册 2008-04-09 16:11
18年会员
UID 115362
性别 男
状态 离线
谢谢。。
12 发表于 2008-05-11 23:05 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by pusofalse at 2008-5-11 22:45:
for %%a in (*.exe) do echo %%~na|findstr "^s"&&exit/b

对不起,开始没注意到"^",但这样不能兼容子目录吧。
批处理之家新域名:www.bathome.net
13 发表于 2008-05-11 23:08 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
Originally posted by zw19750516 at 2008-5-11 11:05 PM:

对不起,开始没注意到"^",但这样不能兼容子目录吧。

你真客气。。- -|||
楼主的要求不是当前目录吗~? 子目录的话 和你的那一样 加个/r就OK了~
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
bat-zw +3 2008-05-11 23:12
14 发表于 2008-05-11 23:12 ·  中国 河南 郑州 电信
初级用户
★★
积分 123
发帖 62
注册 2008-04-09 16:11
18年会员
UID 115362
性别 男
状态 离线
谢谢大家。假如标题换成“查看当前目录下是否有以s开头的exe文件,如果没有则退出”的话???
15 发表于 2008-05-11 23:14 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
for %%a in (*.exe) do echo %%~na|findstr "^s"||exit/b
论坛跳转: