bat读取文件内容

现有一个文件"ABC DEF.GHI",内容如下:
ABC:DEF
GHI:JKL
求一个批处理,逐行读取文件内容,
设置变量,变量名为冒号前内容,值为引号后内容,即:
%ABC%=DEF
%GHI%=JKL

求高手相助!

1、新建文件。

2、声明要打开的文件变量。

3、创建要打开的文件及内容并保存。

4、以只读方式打开文件并赋予变量。

5、读取文件的前三个字节并输出。

7、读取文件的所有内容并输出。

8、预览效果如图。

注意事项:

PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本;而DOS批处理则是基于DOS命令的,用来自动地批量地执行DOS命令以实现特定操作的脚本。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-15
@echo off
set "file=ABC DEF.GHI"
for /f "usebackq tokens=1* delims=:" %%a in ("%file%") do (
set "%%a=%%b"
)
for /f "usebackq delims=:" %%a in ("%file%") do set %%a

按行读取ABC DEF.GHI文件,设置变量,最后一行显示已经设置的变量

追问

程序真的很好用,谢谢你!
不过应用时发现一个新问题:能否跳过文件的第一行和最后一行?
如果可以做到,我会多加10财富值的。

追答@echo off&setlocal enabledelayedexpansion
set "file=ABC DEF.GHI"
set n=0
set m=0
for /f "skip=1 usebackq tokens=1* delims=:" %%a in ("%file%") do set /a n+=1
for /f "skip=1 usebackq tokens=1* delims=:" %%a in ("%file%") do (
set /a m+=1
if  !m! LSS !n! set "%%a=%%b"
)
set m=0
for /f "skip=1 usebackq delims=:" %%a in ("%file%") do (
set /a m+=1
if !m! LSS !n! set %%a
)

关键是跳过最后一行需要预先计算行数,所以代码增加了不少

如果是跳过没冒号的行,或只跳过第一行就只要稍修改一下

本回答被提问者采纳