批处理读取文本第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 拆出来,一个个特殊字符去测试。这里我就不说了,有勤劳的小蜜蜂吗?搞出亿点点例子来,测出不兼容的例子,请踢我一脚。

相关推荐
昵称小白4 小时前
图像在深度学习里是怎么表示的:像素、通道、tensor、batch(二)
深度学习·batch
DeepModel3 天前
通俗易懂讲透 Mini-Batch K-means
开发语言·人工智能·机器学习·kmeans·batch
小布的学习手记5 天前
深度学习里的“自动稳压器”:通俗解读批量规范化(Batch Normalization)
人工智能·深度学习·batch
Huanzhi_Lin8 天前
Nginx本地资源服务器-常用脚本
服务器·前端·nginx·batch·静态资源服务器
hhcgchpspk10 天前
网速上传下载流量监测工具尝试
网络·python·cmd·psutil
清空mega10 天前
动手学深度学习|批量归一化(Batch Normalization)超详细讲解:为什么它能让深层网络更容易训练?
网络·深度学习·batch
bIo7lyA8v13 天前
从 ChangeTracker 到 SQL Batch 的性能诊断与优化
数据库·sql·batch
achi01014 天前
Apache Beam 详细入门指南
etl·批处理·流处理·apache beam·dataflow 模型·pcollection·批流融合
无籽西瓜a16 天前
详解bat脚本:语法、常见用法、注意事项、示例
windows·batch·cmd·自动化工具
zhangfeng113324 天前
`transformers` 的 `per_device_train_batch_size` 不支持小于 1 的浮点数值,llamafactory 支持
人工智能·算法·batch