楼 主
求一个取文件名变量的 BAT
发表于 2007-07-25 21:58 · 中国 广东 深圳 龙岗区 电信
初级用户
★★
积分 110 发帖 52 注册 2007-07-25 16:12 19年会员 UID 94014 性别 男
状态 离线
功能:
搜索当前目录(不含子目录)的 BIN 文件,如果有两个或两个以上 BIN 文件,则设置:
SET GMAME=ERER
如果没有 BIN 文件,则设置:
SET GMAME=ER
如果只有一个 BIN 文件,则设置:
SET GMAME=BIN文件名 不包含后缀,比如:目录下有一个 DF54.BIN 则:
SET GMAME=DF54
求高手帮忙!
第 2 楼
发表于 2007-07-25 22:08 · 中国 天津 电信
银牌会员
★★★
积分 1,928 发帖 931 注册 2007-01-06 11:46 19年会员 UID 75624 性别 男
状态 离线
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 ]
第 3 楼
发表于 2007-07-25 23:15 · 中国 广东 深圳 龙岗区 电信
初级用户
★★
积分 110 发帖 52 注册 2007-07-25 16:12 19年会员 UID 94014 性别 男
状态 离线
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文件里,有错误,一运行就退出
第 4 楼
发表于 2007-07-26 16:07 · 中国 广东 深圳 宝安区 电信
初级用户
★★
积分 110 发帖 52 注册 2007-07-25 16:12 19年会员 UID 94014 性别 男
状态 离线
有错:
当只有一个BIN文件时,比如 123.bin
返回 set gmame=bin1
而不是不带后缀的文件名 set gmame=123
第 5 楼
发表于 2007-07-26 17:09 · 中国 广东 湛江 廉江市 电信
高级用户
★★★
积分 959 发帖 311 注册 2006-04-11 14:08 20年会员 UID 53665 性别 男 来自 广东-LianJiang
状态 离线
正确应该是这样的:
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)
)
)
κχυμγνξοθπρωψιαδλεηφβτζσ┬╀┾┳┞┯┰┱┣┲┳╂╁│├┟┭┠这是什么??这就是我的人生
第 6 楼
发表于 2007-07-26 17:16 · 中国 北京 联通
中级用户
★★
替身
积分 269 发帖 130 注册 2007-03-23 21:41 19年会员 UID 82683 性别 女
状态 离线
在给另外一种解法
@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
第 7 楼
发表于 2007-07-26 19:25 · 中国 广东 深圳 电信
初级用户
★★
积分 110 发帖 52 注册 2007-07-25 16:12 19年会员 UID 94014 性别 男
状态 离线
第 8 楼
发表于 2007-07-26 22:52 · 中国 湖南 长沙 电信
银牌会员
★★★
积分 2,268 发帖 879 注册 2006-12-19 16:23 19年会员 UID 73968 性别 男
状态 离线
@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
第 9 楼
发表于 2007-07-27 09:42 · 中国 广东 深圳 宝安区 电信
初级用户
★★
积分 110 发帖 52 注册 2007-07-25 16:12 19年会员 UID 94014 性别 男
状态 离线
按5楼的试了,昨天在XP下,硬盘上,正常
今天刻到启动光盘根目录上,用此光盘启动电脑,从AUTOEXEC.BAT调用运行此BAT出错,显示:
Write protect error writing drive A
难道这个BAT不能在纯DOS下运行或不能在只读盘上运行吗?
第 10 楼
发表于 2007-07-27 09:50 · 中国 浙江 杭州 电信
银牌会员
★★★
积分 1,928 发帖 931 注册 2007-01-06 11:46 19年会员 UID 75624 性别 男
状态 离线
第 11 楼
发表于 2007-07-27 10:03 · 中国 广东 电信
初级用户
★
游荡的孤魂
积分 79 发帖 29 注册 2007-04-02 11:08 19年会员 UID 83714 性别 男 来自 湖南
状态 离线
纯DOS下的for是个光杆司令,不支持 /f、/r、/d、/l 开关。
第 12 楼
发表于 2007-07-27 12:00 · 中国 广东 深圳 宝安区 电信
初级用户
★★
积分 110 发帖 52 注册 2007-07-25 16:12 19年会员 UID 94014 性别 男
状态 离线
第 13 楼
发表于 2008-08-27 15:14 · IANA 局域网IP(Private-Use)
新手上路
★
积分 12 发帖 6 注册 2007-11-23 16:20 18年会员 UID 103533 性别 男
状态 离线
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正