脚本——在某个文件夹下提取所有txt文件的某一行

最近对由于研究图像,需要对图像数据集的关键点定位文件提取某一行然后倒入到excel里头,每个关键点定位文件有五行,需要对很多类似文件进行提取同一行重新写入到另一个txt里头,所以研究了很长时间写了一个脚本文件,在此记录一下。

如图假设我的result文件夹下有1521个txt文件

脚本——在某个文件夹下提取所有txt文件的某一行_第1张图片

每个txt的文件内容是差不多的(我这里有五行,当然你的也可以大于5行)

脚本——在某个文件夹下提取所有txt文件的某一行_第2张图片

我的这个第一行表示的是右眼的横坐标和纵坐标,第二到第五行分别表示左眼的、右嘴角、左嘴角和鼻尖的。(和你使用这个脚本没有什么关系)

然后将其中一个.bat复制到result文件夹下,例如我现在要提取第一行的,我复制right_eye.bat到result如下图所示:

脚本——在某个文件夹下提取所有txt文件的某一行_第3张图片

然后右键点击此批处理文件,以管理员身份运行即可。

脚本——在某个文件夹下提取所有txt文件的某一行_第4张图片

Dos窗口可能会出现右边的提示,不用理会。运行完了之后在resutl文件夹下会有一个right_eye.txt的文件,即为这1521个txt的第一行的融合文件。

脚本——在某个文件夹下提取所有txt文件的某一行_第5张图片

具体批处理代码如下:

@echo off
(for %%i in (*.txt) do (
    setlocal enabledelayedexpansion
    for /f "usebackq delims=" %%a in ("%%i") do (
        if defined . (set .=%%a)else set .=.&echo,%%a
    )
    echo%%.
endlocal
))>right_eye.txt

同理,如果你需要提取第二行到一个txt里,你只需要将产生的right_eye.txt剪切存到别的路径下(如果不这样,提取第二行也会将right_eye.txt的第二行存到它生成的txt里),然后运行left_eye.bat即可。

具体批处理代码如下:

@echo off
(for %%i in (*.txt) do (
    setlocal enabledelayedexpansion
    for /f "usebackq skip=1 delims=" %%a in ("%%i") do (
        if defined . (set .=%%a)else set .=.&echo,%%a
    )
    echo%%.
endlocal
))>left_eye.txt

其中如果要提取第N行,将

for /f "usebackq skip=1 delims=" %%a in ("%%i") do

里头的skip=1改为skip=N即可。

如果要将提取的名字命名为XXX.txt,将

))>left_eye.txt

改为))>XXX.txt即可。



附代码链接:链接:http://pan.baidu.com/s/1jIiHWAq 密码:b074

你可能感兴趣的:(批量处理脚本)