|
pzppzp
初级用户
 
积分 110
发帖 52
注册 2007-7-25
状态 离线
|
『楼 主』:
求一个取文件名变量的 BAT
功能:
搜索当前目录(不含子目录)的 BIN 文件,如果有两个或两个以上 BIN 文件,则设置:
SET GMAME=ERER
如果没有 BIN 文件,则设置:
SET GMAME=ER
如果只有一个 BIN 文件,则设置:
SET GMAME=BIN文件名 不包含后缀,比如:目录下有一个 DF54.BIN 则:
SET GMAME=DF54
求高手帮忙!
|
|
2007-7-25 21:58 |
|
|
wudixin96
银牌会员
    
积分 1928
发帖 931
注册 2007-1-6
状态 离线
|
『第
2 楼』:
for /f "delims=" %%i in ('dir /b^|find /c "bin"') do (
if %%i geq 2 (
set gmame=erer
) else (
if %%i==1 (set gmame=bin%%~ni) else (set gmame=er)
)
) 没测试,试试?
呵呵,粗心了,少了个)。没把for包好了。
[ Last edited by wudixin96 on 2007-7-26 at 07:26 AM ]
|
|
2007-7-25 22:08 |
|
|
pzppzp
初级用户
 
积分 110
发帖 52
注册 2007-7-25
状态 离线
|
『第
3 楼』:
for /f "delims=" %%i in ('dir /b^|find /c "bin"') do (
if %%i geq 2 (
set gmame=erer
) else (
if %%i==1 (set gmame=bin%%~ni) else (set gmame=er)
)
我把上面六行直接复制到一个BAT文件里,有错误,一运行就退出
|
|
2007-7-25 23:15 |
|
|
pzppzp
初级用户
 
积分 110
发帖 52
注册 2007-7-25
状态 离线
|
『第
4 楼』:
有错:
当只有一个BIN文件时,比如 123.bin
返回 set gmame=bin1
而不是不带后缀的文件名 set gmame=123
|
|
2007-7-26 16:07 |
|
|
qasa
高级用户
   
积分 959
发帖 311
注册 2006-4-11 来自 广东-LianJiang
状态 离线
|
『第
5 楼』:
正确应该是这样的:
for /f "delims=" %%i in ('dir /b^|find /c "bin"') do (
if %%i geq 2 (set gmame=erer) else (
if %%i==1 for /f "delims=" %%j in ('dir /a /b^|find /i "bin"') do (
set gmame=%%~nj) else (set gmame=er)
)
)
|

κχυμγνξοθπρωψιαδλεηφβτζσ┬╀┾┳┞┯┰┱┣┲┳╂╁│├┟┭┠这是什么??这就是我的人生 |
|
2007-7-26 17:09 |
|
|
ansipeter
中级用户
   替身
积分 269
发帖 130
注册 2007-3-23
状态 离线
|
『第
6 楼』:
在给另外一种解法
@echo off&setlocal enabledelayedexpansion
for /r . %%a in (*.bin) do (
set /a b+=1
if !b! geq 2 set gmame=erer&goto:eof
if !b! equ 1 set "gmame=bin%%~na"
)
if not defined b set gmame=er
|
|
2007-7-26 17:16 |
|
|
pzppzp
初级用户
 
积分 110
发帖 52
注册 2007-7-25
状态 离线
|
|
2007-7-26 19:25 |
|
|
26933062
银牌会员
    
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
8 楼』:
@ECHO OFF
set num=0
setlocal ENABLEDELAYEDEXPANSION
for /f "delims=" %%i in ('dir/b e:\111\*.txt') do (
set var=%%~ni
if exist "%%i" set/a num+=1
)
if %num% equ 0 set GMAME=ER&goto tui
if %num% geq 2 (set GMAME=ERER) else set GMAME=%var%
:tui
echo %GMAME%
pause
|
|
2007-7-26 22:52 |
|
|
pzppzp
初级用户
 
积分 110
发帖 52
注册 2007-7-25
状态 离线
|
『第
9 楼』:
按5楼的试了,昨天在XP下,硬盘上,正常
今天刻到启动光盘根目录上,用此光盘启动电脑,从AUTOEXEC.BAT调用运行此BAT出错,显示:
Write protect error writing drive A
难道这个BAT不能在纯DOS下运行或不能在只读盘上运行吗?
|
|
2007-7-27 09:42 |
|
|
wudixin96
银牌会员
    
积分 1928
发帖 931
注册 2007-1-6
状态 离线
|
『第
10 楼』:
还真不知道纯DOS下是否支持for 扩展的。
|
|
2007-7-27 09:50 |
|
|
digger
初级用户
  游荡的孤魂
积分 79
发帖 29
注册 2007-4-2 来自 湖南
状态 离线
|
『第
11 楼』:
纯DOS下的for是个光杆司令,不支持 /f、/r、/d、/l 开关。
|
|
2007-7-27 10:03 |
|
|
pzppzp
初级用户
 
积分 110
发帖 52
注册 2007-7-25
状态 离线
|
『第
12 楼』:
看样子在DOS下没法实现这功能了
|
|
2007-7-27 12:00 |
|
|
ben
新手上路

积分 12
发帖 6
注册 2007-11-23
状态 离线
|
|
2008-8-27 15:14 |
|