Board logo

标题: 求一个取文件名变量的 BAT [打印本页]

作者: pzppzp     时间: 2007-7-25 21:58    标题: 求一个取文件名变量的 BAT
功能: 搜索当前目录(不含子目录)的 BIN 文件,如果有两个或两个以上 BIN 文件,则设置: SET GMAME=ERER 如果没有 BIN 文件,则设置: SET GMAME=ER 如果只有一个 BIN 文件,则设置: SET GMAME=BIN文件名 不包含后缀,比如:目录下有一个 DF54.BIN 则: SET GMAME=DF54 求高手帮忙!

作者: wudixin96     时间: 2007-7-25 22:08
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 ]

作者: pzppzp     时间: 2007-7-25 23:15
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文件里,有错误,一运行就退出

作者: pzppzp     时间: 2007-7-26 16:07
有错: 当只有一个BIN文件时,比如 123.bin 返回 set gmame=bin1 而不是不带后缀的文件名 set gmame=123

作者: qasa     时间: 2007-7-26 17:09
正确应该是这样的:
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)
   )
)

作者: ansipeter     时间: 2007-7-26 17:16
在给另外一种解法
@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

作者: pzppzp     时间: 2007-7-26 19:25
谢谢,可以了 这里高手真多

作者: 26933062     时间: 2007-7-26 22:52
@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

作者: pzppzp     时间: 2007-7-27 09:42
按5楼的试了,昨天在XP下,硬盘上,正常 今天刻到启动光盘根目录上,用此光盘启动电脑,从AUTOEXEC.BAT调用运行此BAT出错,显示: Write protect error writing drive A 难道这个BAT不能在纯DOS下运行或不能在只读盘上运行吗?

作者: wudixin96     时间: 2007-7-27 09:50
还真不知道纯DOS下是否支持for 扩展的。

作者: digger     时间: 2007-7-27 10:03
  纯DOS下的for是个光杆司令,不支持 /f、/r、/d、/l 开关。

作者: pzppzp     时间: 2007-7-27 12:00
看样子在DOS下没法实现这功能了

作者: ben     时间: 2008-8-27 15:14
高手真多啊