[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 7# smatenchen


实现对文件指定行的读取的批处理小函数
http://bbs.bathome.net/thread-4450-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# qixiaobin0715



1
感谢大神。


2
鄙人的办法比较笨拙。


3
【不一定非要用for来实现,】
你有其它思路吗?
有空时,请来继续讨论一下。

TOP

本帖最后由 smatenchen 于 2022-5-31 08:58 编辑

回复 4# qixiaobin0715



1
感谢大神。


2
刚刚,鄙人试过了,type 后可以接 | 。


3
昨天,鄙人在 type 后用 | 接了 sort 命令,结果有点古怪,没弄明白,所以今天来了问大神们。


4
sort 命令会把原来的顺序打乱,这对于要用 for /f 读取文本里的前或后n行的操作,不利。
因为,它会打乱顺序,重排后,原来的前n行里的每一行都可能会被排到其它行的位次了。
对此,有解法吗?

TOP

回复 3# Batcher



1
感谢大神。


2
用了goto :Next,跳出循环。


3
如果,是要读取第n行,第n+x行,第n+y行……等某些指定的行时呢?
鄙人,也曾想过用goto语句,但当需要读取多个指定的行时,它就不够用了。

TOP

本帖最后由 smatenchen 于 2022-6-2 18:26 编辑

回复 2# qixiaobin0715



1
感谢大神提示。


2
tokens=1?,干嘛不tokens=2,直接把第2列交给%%i,再 echo %%i 呢?


3
findstr /n .* 1.txt,这里用了表达式吗?那这里不需要使用 /r 参数吗?


4
echo,%%j,echo后接了,号,这是何用意?是省了%%i然后再在后面跟着显示下一列%%j吗?

TOP

对第4条来说,不一定非要用for来实现,具体问题具体分析。如果一定要用的话,按照你的方法那就用单个分隔符多次使用for循环。

TOP

回复 1# smatenchen
管道后面跟find、findstr命令应当没有问题,要看你怎么用。

TOP

比如读取第20行:
  1. @echo off
  2. for /f "skip=19 delims=" %%a in ('type "1.txt"') do (
  3.     echo,%%a
  4.     goto :Next
  5. )
  6. :Next
  7. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

比如读取第20行:
  1. @echo off
  2. for /f "tokens=1* delims=:" %%i in ('findstr /n .* 1.txt^|findstr /b "20:"') do echo,%%j
  3. pause
复制代码

TOP

返回列表