中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-09 13:57
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,254 会员排行
DOS批处理 & 脚本技术(批处理室) » 求一个取文件名变量的 BAT
可打印版本  1,524 / 12
第1楼 pzppzp 发表于 2007-07-25 21:58
初级用户 发帖 52 积分 110
求一个取文件名变量的 BAT
功能:
搜索当前目录(不含子目录)的 BIN 文件,如果有两个或两个以上 BIN 文件,则设置:
SET GMAME=ERER
如果没有 BIN 文件,则设置:
SET GMAME=ER
如果只有一个 BIN 文件,则设置:
SET GMAME=BIN文件名 不包含后缀,比如:目录下有一个 DF54.BIN 则:
SET GMAME=DF54

求高手帮忙!
第2楼 wudixin96 发表于 2007-07-25 22:08
银牌会员 发帖 931 积分 1,928


没测试,试试?

呵呵,粗心了,少了个)。没把for包好了。

[ Last edited by wudixin96 on 2007-7-26 at 07:26 AM ]
第3楼 pzppzp 发表于 2007-07-25 23:15
初级用户 发帖 52 积分 110
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楼 pzppzp 发表于 2007-07-26 16:07
初级用户 发帖 52 积分 110
有错:
当只有一个BIN文件时,比如 123.bin
返回 set gmame=bin1
而不是不带后缀的文件名 set gmame=123
第5楼 qasa 发表于 2007-07-26 17:09
高级用户 发帖 311 积分 959 来自 广东-LianJiang

正确应该是这样的:

第6楼 ansipeter 发表于 2007-07-26 17:16
中级用户 发帖 130 积分 269
在给另外一种解法
第7楼 pzppzp 发表于 2007-07-26 19:25
初级用户 发帖 52 积分 110
谢谢,可以了
这里高手真多
第8楼 26933062 发表于 2007-07-26 22:52
银牌会员 发帖 879 积分 2,268
@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楼 pzppzp 发表于 2007-07-27 09:42
初级用户 发帖 52 积分 110
按5楼的试了,昨天在XP下,硬盘上,正常
今天刻到启动光盘根目录上,用此光盘启动电脑,从AUTOEXEC.BAT调用运行此BAT出错,显示:
Write protect error writing drive A
难道这个BAT不能在纯DOS下运行或不能在只读盘上运行吗?
第10楼 wudixin96 发表于 2007-07-27 09:50
银牌会员 发帖 931 积分 1,928
还真不知道纯DOS下是否支持for 扩展的。
第11楼 digger 发表于 2007-07-27 10:03
初级用户 发帖 29 积分 79 来自 湖南
  纯DOS下的for是个光杆司令,不支持 /f、/r、/d、/l 开关。
第12楼 pzppzp 发表于 2007-07-27 12:00
初级用户 发帖 52 积分 110
看样子在DOS下没法实现这功能了
第13楼 ben 发表于 2008-08-27 15:14
新手上路 发帖 6 积分 12
高手真多啊
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023