标题: 查看当前目录下是否有以s开头的exe文件,如果有则退出
[打印本页]
作者: wang6542975
时间: 2008-5-11 21:50
标题: 查看当前目录下是否有以s开头的exe文件,如果有则退出
请至少给出4种以上方法
作者: bat-zw
时间: 2008-5-11 22:29
标题: 暂时只想到三个:
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 ]
作者: bat-zw
时间: 2008-5-11 22:45
标题: 再来一个:
for /r %%i in (s*.exe) do set n=1
if defined n goto :eof
作者: pusofalse
时间: 2008-5-11 22:45
for %%a in (*.exe) do echo %%~na|findstr "^s"&&exit/b
作者: pusofalse
时间: 2008-5-11 22:46
方法简直太多了啊~
作者: pusofalse
时间: 2008-5-11 22:49
Quote: |
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不是也循环子目录中的文件吗?
作者: bat-zw
时间: 2008-5-11 22:53
回楼上,yes。
[
Last edited by zw19750516 on 2008-5-11 at 11:10 PM ]
作者: wang6542975
时间: 2008-5-11 22:55
标题: 正解
@echo off
dir s*.exe || echo Didn't exist file s*.exe & pause & exit
作者: pusofalse
时间: 2008-5-11 22:55
Quote: |
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吗?~
作者: bat-zw
时间: 2008-5-11 22:58
Quote: |
Originally posted by wang6542975 at 2008-5-11 22:55:
@echo off
dir s*.exe || echo Didn't exist file s*.exe & pause & exit |
|
非正解,如存在子目录则。。。
作者: wang6542975
时间: 2008-5-11 23:04
谢谢。。
作者: bat-zw
时间: 2008-5-11 23:05
Quote: |
Originally posted by pusofalse at 2008-5-11 22:45:
for %%a in (*.exe) do echo %%~na|findstr "^s"&&exit/b |
|
对不起,开始没注意到"^",但这样不能兼容子目录吧。
作者: pusofalse
时间: 2008-5-11 23:08
Quote: |
Originally posted by zw19750516 at 2008-5-11 11:05 PM:
对不起,开始没注意到"^",但这样不能兼容子目录吧。 |
|
你真客气。。- -|||
楼主的要求不是当前目录吗~? 子目录的话 和你的那一样 加个/r就OK了~
作者: wang6542975
时间: 2008-5-11 23:12
谢谢大家。假如标题换成“查看当前目录下是否有以s开头的exe文件,如果没有则退出”的话???
作者: pusofalse
时间: 2008-5-11 23:14
for %%a in (*.exe) do echo %%~na|findstr "^s"||exit/b
作者: bat-zw
时间: 2008-5-11 23:14
这个楼主自己想一下就能解决了。
作者: wang6542975
时间: 2008-5-11 23:20
标题: 对第二个代码不是太明白望解释。
for /f "delims=" %%i in ('dir /s /b s*.exe') do set n=1
if defined n goto :eof
此代码中defined 是什么意思?
望解释。
作者: bat-zw
时间: 2008-5-11 23:23
&&找到非空变量(n)的意思,如前面对变量n进行了设值(非空),则为真即找得到,如前面没有设值,则为假即找不到。
注:defined后面的变量不要加%%或!!。
[
Last edited by zw19750516 on 2008-5-11 at 11:25 PM ]
作者: wang6542975
时间: 2008-5-11 23:27
thanks
作者: slore
时间: 2008-5-11 23:45
第2个我怎么感觉多余……如果s的文件很多是不是还要do那么多下……
直接不是就可以干嘛要个n呢?
@echo off
for /f "delims=" %%i in ('dir /s /a-d /b s*.exe') do goto :eof
pause
上面的set n的似乎都可以直接goto :eof只要有一个就退……
还有要/a-d参数……万一文件夹叫……
另一个方法
@echo off
dir /s /a-d /b s*.exe 1>nul 2>nul||goto :no
exit
:no
echo 没有
pause>nul