返回列表 发帖

刚才少传了

@echo off
setlocal enabledelayedexpansion
for /r %systemdrive%\ %%i in (*.inf) do (
     set /a n+=1
     if !n! gtr 4 goto a
     echo %%i
     set /p v=<%%i
     echo !v!
    )
:a
pause >nul

TOP

@echo off
(For /f "tokens=2* delims=:" %%i in ('Findstr /n ".*" "*.txt"') do If "%%i"=="1" echo %%j)>1.txt
pauseCOPY

TOP

回复 3# inittab


    嗯嗯,我之前碰到了这个问题,也是一直没有想明白是怎么回事,论坛里好像也有人测试过,没弄出个所以然。。。for /r 的这种情况确实只有在嵌套于另一个for中时,无论是设置变量,还是直接引用前一个for返回的值,都不能显示我们想要的结果。如果使用单独for /r 后跟参数都没问题,或者在一个for中使用 call,命令也可以通过。这是你即使为%%i重新赋予新的变量名都没有问题,但是,如果你开启了变量延迟,并且使用了!var!,那么它仍然无法正常显示>_<。也就是for /r 之后不能有"!"。
  在这里顺便求下说明。先谢过了!
踏实一些点.不要着急.你想要的时间都会给你.2

TOP

本帖最后由 慕夜蓝化 于 2014-12-30 21:29 编辑
@echo off
setlocal enabledelayedexpansion
dir /s/b/aa c:\*inf >1.txt 2>nul||echo,没有inf文件&goto :end
set "n=0"
:a
if %n% equ 4 goto :end
more +%n% 1.txt >2.txt
set/p a=<2.txt
echo,%a%:&set/p b=<"%a%"&set/p=!b!<nul&echo,&set "b="
set/a n+=1
goto :a
:end
pause>nul&exitCOPY
这里是完全脱离for命令的一个尝试,一直以来,我都在想,除了for命令,还有那些命令能作用与行,也是前天刚刚想到 more +n and set/p 可以做到,但是相对于for来说可能比较麻烦一点。
踏实一些点.不要着急.你想要的时间都会给你.2

TOP

本帖最后由 dengyuli 于 2015-1-3 10:42 编辑
@echo off
setlocal enabledelayedexpansion
set ctr=0
set "infs="
echo 请稍等……
for /f "delims=? tokens=* eol=" %%a in ('dir /s /b !systemdrive!') do (
set str=%%a
if "!str:~-4!"==".inf" set infs=!infs!,"!str: =`!" & set /a ctr+=1
if !ctr! geq 4 goto:show
if !ctr!==0 exit
)
set ctrt=0
for %%a in (!infs!!infs!!infs!!infs!) do (
set ctr=0
set t=%%a
set str=!t:`= !
for /f "delims=~ tokens=* eol=?" %%b in ('type !str!') do (
  if !ctr! == 0 echo !str! & echo %%b & set ctr=1 & set /a ctrt+=1
)
if !ctrt! geq 4 pause>nul & exit
)
:show
for %%a in (!infs!) do (
set ctr=0
set t=%%a
set str=!t:`= !
for /f "delims=~ tokens=* eol=?" %%b in ('type !str!') do (
  if !ctr! == 0 echo !str! & echo %%b & set ctr=1
)
)
pause>nulCOPY

TOP

献丑了
@echo off
Setlocal enabledelayedexpansion
for /r F:\ %%a in (*.inf) do (if not "!js!" equ "4" (set aa=%%a&call :xs) else (goto end))
echo 不存在inf文件!
pause>nul&exit
:xs
echo %aa%
set /p nr=<%aa%
echo %nr%
echo.&set /a js+=1&goto :eof
:end
pauseCOPY

TOP

返回列表