[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决] 请教将Excel中的内容进行格式变换

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

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

这个,还是VBS比较靠谱吧。

TOP

  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
复制代码
1

评分人数

看得多说得多,远比不上写得多。

TOP

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

TOP

返回列表