Board logo

标题: [文本处理] 【已解决】批处理如何去除文本每行数据的空格并将除了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 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%i in (d:\数据\*.txt) do (
  3.     (for /f "usebackq delims=" %%a in ("%%i") do (
  4.         for %%b in (%%a) do (
  5.             if %%b equ 0 (set/a a+=1) else set n=!n!%%b
  6.         )
  7.         if defined a (for /l %%c in (1 1 !a!) do set n=!n!0)
  8.         echo,!n!&set n=&set a=
  9.     )) >%temp%\$
  10.     move /y %temp%\$ "%%i" >nul
  11. )
  12. pause
复制代码

作者: cobat    时间: 2015-3-9 09:36

本帖最后由 cobat 于 2015-3-9 09:41 编辑

例子举的不好,已经排好序了?
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. pushd "d:\数据"
  4. for %%a in (*.txt) do (
  5.     (for /f "delims=" %%b in ('type "%%a"') do (
  6.         set s=%%b
  7.         for %%c in (1,2,3,4,5,6,7,8,9,0) do (
  8.             for %%d in ("!s:%%c=" "!") do set s1=!s1!%%c
  9.             set s1=!s1:~,-1!
  10.         )
  11.         echo !s1!
  12.         set s1=
  13.     ))>$
  14.     move $ "%%a"
  15. )
  16. pause
复制代码

作者: 慕夜蓝化    时间: 2015-3-9 10:39

  1. @echo off
  2. for %%i in (d:\数据\*.txt) do (
  3.     (for /f "usebackq delims=" %%a in ("%%i") do (
  4.         setlocal enabledelayedexpansion
  5.         for %%b in (%%a) do (
  6.             set/a v+=1
  7.             if %%b equ 0 (set/a a+=1) else set #%%b#!v!=#
  8.         )
  9.         for /f "delims=#" %%d in ('set #') do set n=!n!%%d
  10.         if defined a (for /l %%c in (1 1 !a!) do set n=!n!0)
  11.         echo,!n!&endlocal
  12.     )) >%temp%\$
  13.     move /y %temp%\$ "%%i"
  14. )
  15. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2