标题: [文本处理] 【已解决】BAT:如何批量整理txt文本数据 [打印本页]
作者: 思想之翼 时间: 2015-1-28 00:25 标题: 【已解决】BAT:如何批量整理txt文本数据
本帖最后由 思想之翼 于 2015-1-28 11:21 编辑
D:/数据1/内有若干txt文本,每个文本内的数据格式如下:
02,24,45,56,67,13,38,89,04,05,06,07,25,26,27,46,47,57,18,19,39
欲批量整理文本内的数据,整理后的数据格式为:
2=0 2
2=2 4
2=4 5
2=5 6
2=6 7
2=1 3
2=3 8
2=8 9
2=0 4
2=0 5
2=0 6
2=0 7
2=2 5
2=2 6
2=2 7
2=4 6
2=4 7
2=5 7
2=1 8
2=1 9
2=3 9
整理后的文本保留原名称,并写入D:/数据2/内
这样的代码如何写?恳望得到帮助。
作者: 再世情緣 时间: 2015-1-28 07:04
- @echo off &color 0a &setlocal enabledelayedexpansion
- mkdir "D:\数据2" >nul 2>nul
- cd /d "D:\数据1\"
- for %%a in (*.txt) do (
- set "nm=%%~nxa"
- set /p code=<"%%~fa"
- call :next
- )
- pause.
- call exit
-
- :next
- cd.>"D:\数据2\!nm!"
- set /a "i=0"
- :loop
- set "ab=!code:~%i%,2!"
- if "!ab!" EQU "" (goto :eof)
- set "a=!ab:~0,1!" &set "b=!ab:~1,1!"
- (echo.2=!a! !b!)>>"D:\数据2\!nm!"
- set /a "i+=3"
- goto :loop
复制代码
作者: 慕夜蓝化 时间: 2015-1-28 08:48
- @echo off&setlocal enabledelayedexpansion
- pushd d:\数据1\
- for /f "delims=" %%i in ('dir /b/a-d d:\数据1\*txt') do (
- (for /f "usebackq delims=" %%a in ("%%~fsi") do (
- for %%b in (%%a) do (
- set "str=%%b"&echo,2=!str:~,1! !str:~-1!
- )
- )) >d:\数据2\%%~nxi
- )
- pause
复制代码
我这里测试是通过的,你试一下。
作者: 思想之翼 时间: 2015-1-28 11:16
本帖最后由 思想之翼 于 2015-1-28 11:20 编辑
谢谢您们的帮助。测试通过。
作者: c755731262 时间: 2015-1-28 11:51
回复 3# 慕夜蓝化
帮忙看看我的哪里出错了,结果不对- @echo off
- color f0&setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b /a:-d d:\数据1\*txt') do (
- (for /f "delims=" %%b in (%%~fsa) do (
- set n=%%b,p
- echo 2=!n:~0,1! !n:~1,1!
- :loop
- echo 2=!n:~0,1! !n:~1,1!
- set n=!n:~3!
- if not "!n!" == "p" goto :loop
- )
- ) >>d:\数据2\%%~nxa
- )
- pause
复制代码
作者: 慕夜蓝化 时间: 2015-1-28 11:59
本帖最后由 慕夜蓝化 于 2015-1-28 12:00 编辑
回复 5# c755731262 - for /f "delims=" %%a in ('dir /b /a:-d d:\数据1\*txt') do (
- (for /f "delims=" %%b in (%%~fsa) do (
复制代码
之后的一大串都有问题,首先你要提取元素才能这么干复制代码
把这句加上。然后再提取字符;
一定要把基础知识打扎实了再来实习。多看他们的代码。
不懂的就测试,测试完毕还不懂,再来问。
作者: c755731262 时间: 2015-1-28 18:37
回复 6# 慕夜蓝化
我想问的是循环里面第二个for语句执行的代码,哪里出错了,也就是loop所在的()那一块
作者: 慕夜蓝化 时间: 2015-1-28 18:50
回复 7# c755731262
for语句中怎么可以有这种循环呢,这段代码我没看明白你要表达的什么意思;:loop在这里代表的是一个标签,很少有人会在for语句中使用,至少到目前为止还没有见到,你这样写是一个死循环;永远都跳不出去。
也就是说,都是错的,代码很乱。你需要重新构建一个思路。
作者: yiwuyun 时间: 2015-1-28 20:55
好像没有错,不过它太严格依赖文本了。改成这样更好
set n=%%b
echo 2=!n:~0,1! !n:~1,1!
:loop
echo 2=!n:~0,1! !n:~1,1!
set n=!n:~3!
if not "!n!" == "" goto :loop
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |