标题: 如何获得总行数,并循环显示4行且到显示完所有行?
[打印本页]
作者: ngela
时间: 2007-3-24 08:17
标题: 如何获得总行数,并循环显示4行且到显示完所有行?
循环我不会……教一下呀。
作者: lxmxn
时间: 2007-3-24 08:36
以for为关键字搜索一下论坛。
作者: ngela
时间: 2007-3-25 07:31
看了啊,可是就是不会写,改写你的readline.bat也不行……
作者: lxmxn
时间: 2007-3-25 07:34
是每次显示4行,然后按任意键显示下面的4行吗?
作者: everest79
时间: 2007-3-25 08:33
for /f "delims=" %%i in ('find /n /v "" text.txt') do (
echo %%i
set /a l+=1,1/^(l%%4^)||pause>nul
)
作者: axi
时间: 2007-3-25 12:16
楼上方法出现
以零数为除数的错误 提示,请问何解,如何解决?
[
Last edited by axi on 2007-3-24 at 11:17 PM ]
作者: slore
时间: 2007-3-25 12:29
4的倍数的话余数是0啊
@echo off
set l=-1
for /f "delims=" %%i in ('find /n /v "" text.txt') do (
echo %%i
set /a l+=1,1/^(l%%4^) 2>nul||pause>nul
)
作者: axi
时间: 2007-3-25 21:28
楼上代码只显示
---------- text.txt 没有下文? 另外,如何才不把文件名也显示出来,因为此行内容不是文本中的第一行呀,请赐教?
[
Last edited by axi on 2007-3-25 at 08:34 AM ]
作者: everest79
时间: 2007-3-25 21:59
这样子,加了点效果,嘿嘿
@echo off
for /f "skip=2 delims=" %%i in ('find /n /v "" load.ini') do (
echo %%i
set/p=-- More --<nul
set /a l+=1,1/^(l%%4^) 2>nul||pause>nul
set/p=<nul
)
pause>nul
作者: xycoordinate
时间: 2007-3-25 23:57
set /a l+=1,1/^(l%%4^) 2>nul||pause>nul
l和1分不清!!!
作者: everest79
时间: 2007-3-26 00:04
介个不是学习前辈们的灰色吗
作者: ccwan
时间: 2007-3-26 00:20
Quote: |
set /a l+=1,1/^(l%%4^) 2>nul||pause>nul |
|
这个方法用的妙!
作者: axi
时间: 2007-3-26 01:10
直接复制 7楼代码的第二行得到 set l=-1 修改为 set l=-l 或者 set 1=-1 就可以。 领教高手的教学方式,多谢楼上各位!
[
Last edited by axi on 2007-3-25 at 01:00 PM ]
作者: everest79
时间: 2007-3-26 01:13
Quote: |
Originally posted by ccwan at 2007-3-25 11:20 AM:
这个方法用的妙! |
|
谢谢大哥夸奖,嘿嘿
作者: slore
时间: 2007-3-26 02:00
Quote: |
Originally posted by everest79 at 2007-3-25 12:13:
谢谢大哥夸奖,嘿嘿 |
|
:P还不知道说谁的呢: )
作者: everest79
时间: 2007-3-26 02:16
Quote: |
Originally posted by slore at 2007-3-25 01:00 PM:
:P还不知道说谁的呢: ) |
|
咱们俩谁跟谁呀
作者: bjsh
时间: 2007-3-26 03:23
@echo off & setlocal enabledelayedexpansion
set /a c=0
for /f "tokens=1 delims=" %%a in ('find /n /v "" test.txt') do set /a c+=1 & echo %%a && if "!c!"=="4" set /a c=0 & pause >>nul
何必非得去判断是4的倍数呢
[
Last edited by bjsh on 2007-3-25 at 02:25 PM ]
作者: ccwan
时间: 2007-3-26 05:04
这个也很好,加上skip=2就可以不显示文件名只显示文本内容了
作者: lxmxn
时间: 2007-3-26 09:32
Quote: |
Originally posted by bjsh at 2007-3-25 14:23:
@echo off & setlocal enabledelayedexpansion
set /a c=0
for /f "tokens=1 delims=" %%a in ('find /n /v "" test.txt') do set /a c+=1 & echo %%a && if "!c!&qu ... |
|
其实质还是4的倍数,只不过到了4就初始为0了,原理没有变。
作者: everest79
时间: 2007-3-26 09:56
只是单纯的判断的话,if要比使用set的方法快一倍左右的时间,但CPU也高一倍,若本身已经在使用set来计算,那么,反而效率会理快一点,总之一句话,不同地点不同应用
作者: lxmxn
时间: 2007-3-26 13:41
我也来灌一水~~
@ECHO OFF&SETLOCAL ENABLEDELAYEDEXPANSION
SET A=1
FOR /F "TOKENS=1* DELIMS=:" %%A IN ('FINDSTR /N .* TEST.TXT') DO (
ECHO/%%B
SET/A B=!A!%%4
IF !B! EQU 0 (ECHO/任意键显示下4行的内容&PAUSE>NUL)
SET/A A+=1
)
PAUSE&EXIT/B
作者: axi
时间: 2007-3-27 00:38
我想在批处理上创建楼上的批处理(如下),为何不成功呢? 其中 %% 不能创建。
echo @ECHO OFF^&SETLOCAL ENABLEDELAYEDEXPANSION >a.bat
echo SET A=1 >>a.bat
echo FOR /F "TOKENS=1* DELIMS=:" ^%^%A IN ('FINDSTR /N .* TEST.TXT') DO ( >>a.bat
echo ECHO/^%^%B >>a.bat
echo SET/A B=!A!^%^%4 >>a.bat
echo IF !B! EQU 0 (ECHO/任意键显示下4行的内容^&PAUSE^>NUL) >>a.bat
echo SET/A A+=1 >>a.bat
echo ) >>a.bat
echo PAUSE^&EXIT/B >>a.bat
作者: lxmxn
时间: 2007-3-27 00:47
To axi:
如果要创建%%,需要用%%%%来代替。
作者: axi
时间: 2007-3-27 01:34
明解,多谢!
作者: lxmxn
时间: 2007-3-27 01:40
To axi:
兄还可以将以下语句加在21楼代码的前面,直接运行时可以执行:Write下面的代码,带参数运行可以达到你的写入文件的目的。
@if "%1"=="" (@goto :Write) else (@more +2 %0>>%~dp0new.bat&start notepad %~dp0new.bat&goto :eof)
:Write
作者: axi
时间: 2007-3-27 02:36
@more +2 %0>>%~dp0new.bat
简单的一句就可以创建 :Write 下的内容,比起我哪种方法好多。
[
Last edited by axi on 2007-3-26 at 02:20 PM ]
作者: peterdocter
时间: 2007-3-27 05:06
IF !B! EQU 0 (ECHO/任意键显示下4行的内容&PAUSE>NUL)
IF !B! EQU 0 (ECHO/任意键显示下4行的内容&echo %%B>>number.txt)
为什么?生成文件时就出少一行?
uoarlykb
ifkmpcwg
kzllmbms
为什么用了变量延迟功能,也不能用>一次就生成四个内容?非要用>>追加符不何?
[
Last edited by peterdocter on 2007-3-27 at 05:08 AM ]
作者: ngela
时间: 2007-3-29 02:22
多谢啦,解决了.