批处理读取文本第n行并赋值给变量?--遍历所有行并赋值给变量数组

ruby 复制代码
::TraceLines.bat
@goto :test1

http://www.bathome.net/thread-27229-1-1.html#批处理如何获取txt文本中某行某列的内容/指定行指定列的内容
http://www.bathome.net/thread-47304-1-1.html#如何用批处理读取文本第二行并赋值给变量?
https://github.com/npocmaka/batch.scripts/blob/master/fileUtils/tailHead.bat
关联 .lnk: "文件查看:查找文件的第m行第n列.bat"

:test1
	@echo off&setlocal EnableDelayedExpansion
	chcp 936
    set my=hi baby
	rem 空行: 只含有空白字符(cr,space,tab,bs)的行不算空行。
	rem crlf 或 lf 算换行,单独的 cr 不算换行。crlf 或 lf 不计入本行空白字符内。
	set #m=1
	set #n=18
	rem 取从第 #m 行起到第 #n 行中的最后一个非空行。
	rem 好处是兼容特殊字符,不需要写文件。
	(for /l %%a in (!#m! 1 !#n!) do set /p Target=)<"%TEMP%\$"
	set Target

	rem 统计文本行数,最后一个空行不计入总数。
	for /f "tokens=*" %%a in ('type "%TEMP%\$" ^| find /c /v ""') do set sum=%%a
	echo "sum=!sum!"
	rem 遍历文件,取出所有非空行,赋值给 Line00X
	(for /l %%a in (1 1 !sum!) do (set /a no=%%a+1000&set /p Line!no:~1!=))<"%TEMP%\$"
	set Line&pause
@goto :EOF

代码:

:: ---------------------------------------------------------------------------------------------------------------------

::TraceLines.bat

@goto :test1

http://www.bathome.net/thread-27229-1-1.html#批处理如何获取txt文本中某行某列的内容/指定行指定列的内容
http://www.bathome.net/thread-47304-1-1.html#如何用批处理读取文本第二行并赋值给变量?
https://github.com/npocmaka/batch.scripts/blob/master/fileUtils/tailHead.bat

关联 .lnk: "文件查看:查找文件的第m行第n列.bat"

:test1

@echo off&setlocal EnableDelayedExpansion

chcp 936

set my=hi baby

rem 空行: 只含有空白字符(cr,space,tab,bs)的行不算空行。

rem crlf 或 lf 算换行,单独的 cr 不算换行。crlf 或 lf 不计入本行空白字符内。

set #m=1

set #n=18

rem 取从第 #m 行起到第 #n 行中的最后一个非空行。

rem 好处是兼容特殊字符,不需要写文件。

(for /l %%a in (!#m! 1 !#n!) do set /p Target=)<"%TEMP%\$"

set Target

rem 统计文本行数,最后一个空行不计入总数。

for /f "tokens=*" %%a in ('type "%TEMP%\$" ^| find /c /v ""') do set sum=%%a

echo "sum=!sum!"

rem 遍历文件,取出所有非空行,赋值给 Line00X

(for /l %%a in (1 1 !sum!) do (set /a no=%%a+1000&set /p Line!no:~1!=))<"%TEMP%\$"

set Line&pause

@goto :EOF

:: ---------------------------------------------------------------------------------------------------------------------

测试文本(%TEMP%\$):

注意: 文件编码格式为 GB2312(简体中文)

如何输入 cr 或 lf ? 使用 Notepad++ hexeditor 插件,找到 crlf , 选中 cr 或 lf , ctrl+x

:: ---------------------------------------------------------------------------------------------------------------------

rust 复制代码
 2:
 3:F:\快捷方式\Start Menu 开始菜单\!TEMP!.lnk

 5:F:\快捷方式\Start Menu 开始菜单\%CommonProgramFiles(x86)%.lnk
	tab
 7:F:\快捷方式\Start Menu 开始菜单\%TEMP%.lnk
 8:blank1 
 
10:blank3

12:CR1 

14:CR3 

16:C:\;set a=`@#$^&_+-={[}]));)( ''', !temp!,!my!,%temp%,%my%; if !%~1!==!%%~2!;%1,%~2%,%~; ^,^^,^^^,^^^^, !!,!,!!!, %%,%,%%%, ...txt (2).lnk



20:LF

22:aaa

24:C:\;set a=`@#$^&_+-={[}]));)( ''', !temp!,!my!,%temp%,%my%; if !%~1!==!%%~2!;%1,%~2%,%~; ^,^^,^^^,^^^^, !!,!,!!!, %%,%,%%%, ...txt.lnk
25:	 one

27:two

29:three

:: ---------------------------------------------------------------------------------------------------------------------

测试文本(%TEMP%\$)截图:

:: ---------------------------------------------------------------------------------------------------------------------

测试结果截图:

总结:

1 bat 里要把命令赋值给变量,除了 for...in('command')... , 就是 command>file, set/p var=<file

这两者都是有缺点的,前者 in() 会把 command 结果里的 %TEMP% ,!TEMP! 变量展开。

后者要写文件,在大批量运算时,会非常慢。

2 本文代码的好处是不用写文件,或者说只写一次。而且还兼容所有特殊字符。至于控制字符。。。呃,有点超纲了~~

3 想要测试是否兼容各种特殊字符,可以把 line022 拆出来,一个个特殊字符去测试。这里我就不说了,有勤劳的小蜜蜂吗?搞出亿点点例子来,测出不兼容的例子,请踢我一脚。

相关推荐
白熊1882 天前
【机器学习基础】机器学习入门核心算法:Mini-Batch K-Means算法
算法·机器学习·batch
码界奇点8 天前
Kafka性能调优三剑客:深度解析buffer_memory、linger_ms和batch_size
性能优化·kafka·散列表·linq·batch
188_djh15 天前
# 终端执行 java -jar example.jar 时(example.jar为项目jar包)报错:“没有主清单属性” 的解决方法
java·pycharm·jar·cmd·没有主清单属性·java -jar
胡斌附体24 天前
设置环境变量启动jar报
java·jar·cmd·path
疯狂学习GIS1 个月前
Python的ArcPy基于Excel表格对大量遥感影像批量重分类
python·arcpy·批处理·遥感数据·遥感影像·重分类·栅格重分类
wsdhla1 个月前
如何在Windows上实现MacOS中的open命令
mac·cmd·open
每天都要写算法(努力版)1 个月前
【神经网络与深度学习】批标准化(Batch Normalization)和层标准化(Layer Normalization)
深度学习·神经网络·batch
Bruce_Liuxiaowei1 个月前
[特殊字符]fsutil命令用法详解
windows·cmd
意.远2 个月前
批量归一化(Batch Normalization)原理与PyTorch实现
人工智能·pytorch·python·深度学习·神经网络·分类·batch
Ven%2 个月前
如何让老电脑运行快些(极限榨干老电脑硬件)
windows·电脑·cmd