使用bat批量把txt中想要的信息存放到excel

最近喵仙子有个需求,需要抽取大量.log文件中的有效信息到excel,刚开始我用mapreduce给他做了一份,不过他有点蠢配不了环境,于是乎我研究了下bat,终于给他整了个好方法,请看下文。

需求
需要从log中抽取两列数据到excel中。

本西芙没了解过bat语法,所以查了一下,通过结合这两篇解答完成bat命令。
1、实现了按照空格批处理分割txt数据,存储excel
https://zhidao.baidu.com/question/1770548208106936980.html

@echo off
rem 保存为bat文件跟txt文件放一起运行
md "结果\" 2>nul
for /f "delims=" %%a in ('dir /a-d/b *.txt') do (
    setlocal EnableDelayedExpansion
    (for /f "delims=" %%b in ('type "%%a"') do (
        set "str=%%b"
        echo;!str: =,!
    ))>"结果\%%~na.csv"
    Endlocal
)
pause

2、批处理分割字符串
https://blog.csdn.net/zhju85126com/article/details/46649961

@echo off
set str=100x200x300y400y500x600y700
for /f "tokens=1,3-5,* delims=x|y" %%a in ("%str%") do (
	set c1=%%a
	set c3=%%b
	set c4=%%c
	set c5=%%d
	set c6=%%e
)
echo %c1%, %c3%, %c4%, %c5%, %c6%
pause
rem 输出结果为输出结果为:100, 300, 400, 500, 600y700。其中tokens=1,3-5,*表示提取第1、3至5列,同时把第5列后所有剩余字符串作为第6列,一个输出了5个变量,也可以写作tokens=1,3,4,5,*。

最终我所加工的代码,其中代码中tokens=1,2是按照_空格分割的位置,相当于数组的某一元素、把它赋值给str1

@echo off
md "结果\" 2>nul
rem 循环数据
for /f "delims=" %%a in ('dir /a-d/b *.log') do (
    setlocal EnableDelayedExpansion
    rem 切割方式    
    (for /f "tokens=1,2 delims=_| " %%b in ('type "%%a"') do (
        set "str1=%%b %%c"
        echo;!str1: =,!
    ))>"结果\%%~na.csv"
    Endlocal
)
pause

首先根据第一篇解答套入转excel模板,其次根据第二篇解答对bat for循环中分割和选取的描述,修改第五行代码。可以实现。

演示

  • 文件内容
    文件内容

  • 目录下的文件
    目录下的文件
    2、点击aa.bat,生成csv文件
    生成csv文件
    3、任意打开一个csv文件
    csv文件内容

猜你喜欢

转载自blog.csdn.net/xifu_jiang/article/details/88989648