[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
1.不清除行号.
  1. @echo off
  2. ::code by foxjl
  3. ::没有作清除行号的处理,觉得显示行号还是有必要的.
  4. set/p file=拖入文件:
  5. set/p row=输入要提取的行(如提取1-5行则输入: 1 5):
  6. call :start %row%
  7. :start
  8. if "%2"=="" call :start %1 %1
  9. for /l %%i in (%1,1,%2) do (findstr /n .* %file% | findstr "^%%i:")
  10. echo.完成
  11. pause>nul&exit
复制代码
2.清除行号
  1. @echo off
  2. ::code by foxjl
  3. ::这段代码是清除了行号的.
  4. set/p file=拖入文件:
  5. set/p row=输入要提取的行(如提取1-5行则输入: 1 5):
  6. call :start %row%
  7. :start
  8. if "%2"=="" call :start %1 %1
  9. for /l %%i in (%1,1,%2) do (
  10. for /f %%j in ('findstr /n .* %file% ^| findstr "^%%i:"') do (
  11. set "var=%%j" & call set var=%%var:*:=%%
  12. call echo.%%var%%
  13. )
  14. )
  15. echo.完成
  16. pause>nul&exit
复制代码

[ 本帖最后由 foxJL 于 2007-12-23 22:04 编辑 ]

TOP

兄弟的代码似乎没有测试过.有明显错误的地方.

TOP

指教可不敢当.大家一起学习嘛.
就我明眼看到的错误说说吧:
@echo off
set/p file=拖入文件:
set/p row=输入要提取的行(如提取1-5行则输入: 1 5):
:start
if "%row:~0,1%"=="" set row=%row:~1%&&goto :start
for %%a in (%row%) do (set str1=%%a && set str2=%%b)
if "str1" gtr "str2" (set var=%str1% && set str1=%str2% && set str2=%str1%)
for /f "tokens=1* delims=:" %%i in ('fomdstr /n ".*" %~nxfile%') do (
    if "%%i" geq "!str1!" if "%%i" leq "!!str2" echo %%j
)
pause
1."%row:~0,1%"==""  想检测要提取的行的数字吗.如果是从第20到30呢?
2."str1" gtr "str2"  这样做会判断"str1"是否大于"srt2".在这里是常最,不是变量,如果要对比变量得加上%
3.%~nxfile%  我不知道你为什么这么用.建议仔细阅读一下 for/?
4.if "%%i" geq "!str1!" if "%%i" leq "!!str2" echo %%j
  就语法来讲,最好是用()分组:if "%%i" geq "!str1!" (if "%%i" leq "!!str2" (echo %%j))
5."!!str2" 感叹号打错了地方,另外,想调用变量延时得加上:setlocal enabledelayedexpansion

[ 本帖最后由 foxJL 于 2007-12-23 21:59 编辑 ]

TOP

返回列表