标题: [文本处理] 【已解决】批处理如何去除文本每行数据的空格并将除了0之外的每位数字按大小排序 [打印本页]
作者: 思想之翼 时间: 2015-3-9 01:39 标题: 【已解决】批处理如何去除文本每行数据的空格并将除了0之外的每位数字按大小排序
本帖最后由 pcl_test 于 2016-7-12 16:38 编辑
D:/数据/内有若干文本,各文本内数据格式为:
2 3 6 7 8
1 3 5 6 8
0 2 3 5 7
0 2 5 6 9
欲批量去除数据间的空格,并将数据从小到大排序(数据0永远排列在最后)
比如上例数据处理后为:
23678
13568
23570
25690
处理后的数据覆盖原文本数据,保留原文本名称不变。
这样的代码如何写?恳望得到帮助。
作者: pcl_test 时间: 2015-3-9 04:21
回复 1# 思想之翼
去空格和排序这两个问题,楼主提到过N遍了,可见楼主一直只在拿现成的而不愿学习,那么问题来了,作业应该借别人抄吗?这是真正在帮他吗?
作者: 慕夜蓝化 时间: 2015-3-9 08:38
本帖最后由 慕夜蓝化 于 2015-3-9 09:05 编辑
- @echo off&setlocal enabledelayedexpansion
- for %%i in (d:\数据\*.txt) do (
- (for /f "usebackq delims=" %%a in ("%%i") do (
- for %%b in (%%a) do (
- if %%b equ 0 (set/a a+=1) else set n=!n!%%b
- )
- if defined a (for /l %%c in (1 1 !a!) do set n=!n!0)
- echo,!n!&set n=&set a=
- )) >%temp%\$
- move /y %temp%\$ "%%i" >nul
- )
- pause
复制代码
作者: cobat 时间: 2015-3-9 09:36
本帖最后由 cobat 于 2015-3-9 09:41 编辑
例子举的不好,已经排好序了?- @echo off
- setlocal enabledelayedexpansion
- pushd "d:\数据"
- for %%a in (*.txt) do (
- (for /f "delims=" %%b in ('type "%%a"') do (
- set s=%%b
- for %%c in (1,2,3,4,5,6,7,8,9,0) do (
- for %%d in ("!s:%%c=" "!") do set s1=!s1!%%c
- set s1=!s1:~,-1!
- )
- echo !s1!
- set s1=
- ))>$
- move $ "%%a"
- )
- pause
复制代码
作者: 慕夜蓝化 时间: 2015-3-9 10:39
嗯- @echo off
- for %%i in (d:\数据\*.txt) do (
- (for /f "usebackq delims=" %%a in ("%%i") do (
- setlocal enabledelayedexpansion
- for %%b in (%%a) do (
- set/a v+=1
- if %%b equ 0 (set/a a+=1) else set #%%b#!v!=#
- )
- for /f "delims=#" %%d in ('set #') do set n=!n!%%d
- if defined a (for /l %%c in (1 1 !a!) do set n=!n!0)
- echo,!n!&endlocal
- )) >%temp%\$
- move /y %temp%\$ "%%i"
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |