Board logo

标题: [文本处理] [已解决] 请教将Excel中的内容进行格式变换 [打印本页]

作者: ouch1983    时间: 2012-6-3 08:25     标题: [已解决] 请教将Excel中的内容进行格式变换

我想把in.xls中每个AP后面对应的所有字符串都放在AP下面,每个PN后面对应的所有字符串都放在PN下面,串和串之间用分号隔开,如out.xls所示。请教怎么写批处理程序?谢谢。
作者: gawk    时间: 2012-6-3 10:16

这个,还是VBS比较靠谱吧。
作者: weichenxiehou    时间: 2012-6-3 15:30

  1. @echo off&setlocal enabledelayedexpansion
  2. set "tab= "
  3. set num=&set num1=&set num2=
  4. (for /f "tokens=1,2* delims=%tab%" %%a in (test.txt) do (
  5.   set "str=%%a"
  6.   if /i "!str:~1,4!"=="/238" (
  7.     if defined num1 (
  8.       if !num1! gtr !num2! (set num=!num1!) else set num=!num2!
  9.       for /l %%y in (1 1 !num!) do if defined #%%y (echo,!#%%y!%tab%%tab%!$%%y!) else echo,!#%%y!%tab%%tab%%tab%%tab%!$%%y!
  10.     )
  11.     echo,&echo,%%a%tab%%tab%%%b&echo,AP%tab%%tab%%tab%%tab%PN
  12.     for /f "delims==" %%a in ('set # 2^>nul') do set %%a=
  13.     for /f "delims==" %%a in ('set $ 2^>nul') do set %%a=
  14.     set flag=
  15.   )
  16.   if "%%a"=="AP" (set flag=ap&set/a num1=0)
  17.   if "%%a"=="PN" (set flag=pn&set/a num2=0)
  18.   if !flag!==ap (
  19.     set /a num1+=1
  20.     if "%%a"=="AP" (set str1=%%c) else set "str1=%%a"
  21.     set "#!num1!=!str1!"
  22.   )
  23.   if !flag!==pn (
  24.     set /a num2+=1
  25.     if "%%a"=="PN" (set str1=%%c) else set "str1=%%a"
  26.     set "$!num2!=!str1!"
  27.   )
  28. )
  29. if !num1! gtr !num2! (set num=!num1!) else set num=!num2!
  30. for /l %%y in (1 1 !num!) do if defined #%%y (echo,!#%%y!%tab%%tab%!$%%y!) else echo,!#%%y!%tab%%tab%%tab%%tab%!$%%y!
  31. )>intermediate.txt
  32. start intermediate.txt
复制代码

作者: ouch1983    时间: 2012-6-3 15:35

十分感谢Weichenxiehou 老师,问题已解决,还讲了很多




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