标题: [文本处理] 【已解决】BAT:如何这样批量处理文本数据 [打印本页]
作者: 思想之翼 时间: 2015-2-11 21:37 标题: 【已解决】BAT:如何这样批量处理文本数据
本帖最后由 思想之翼 于 2015-2-11 22:31 编辑
D:/数据/内有若干txt文本,每个文本内的数据格式如下:
观测地点:33 重量:0
观测地点:31 重量:1
观测地点:31 重量:6
观测地点:30 重量:2
观测地点:29 重量:9
观测地点:28 重量:5
观测地点:28 重量:7
观测地点:26 重量:3
观测地点:24 重量:4
观测地点:20 重量:8
0162957348
现在欲将每个文本做如下处理:
1、只保留第11行数据:0162957348
2、在保留下的数据首位前添加英文逗号:'0162957348
3、在保留下的数据末位后添加回车键
4、数据处理后覆盖原文本的数据
这样的代码如何写?恳望得到帮助。
作者: pcl_test 时间: 2015-2-11 21:53
本帖最后由 pcl_test 于 2015-2-11 22:31 编辑
回复 1# 思想之翼
测试前先备份原文件- @echo off
- setlocal enabledelayedexpansion
- cd /d "D:\数据\"
- for /f "delims=" %%a in ('dir /b *.txt') do (
- set n=1
- for /f "delims=" %%b in ('type "%%~nxa"') do (
- if "!n!" == "11" (
- >$ echo,'%%b
- ) else (
- set /a n+=1
- )
- )
- move $ "%%~nxa"
- )
- pause
复制代码
作者: tmplinshi 时间: 2015-2-11 22:17
本帖最后由 tmplinshi 于 2015-2-11 22:20 编辑
- @echo off
- pushd "d:\数据"
- for /f "delims=" %%f in ('dir /b *.txt') do (
- call :FileReadLine "%%f" 11 ' > .temp_file
- move .temp_file "%%f"
- )
- exit /b
-
- :FileReadLine <Filename> <LineNum> [Prefix]
- set /a skip=%2-1
- for /f "usebackq skip=%skip% tokens=*" %%i in ("%~1") do (
- echo,%3%%i
- exit /b
- )
复制代码
作者: DAIC 时间: 2015-2-11 22:30
- @echo off
- sed -i "11s/$/\n/" 1.txt
- sed -i "11,12!d" 1.txt
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |