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

[文本处理] [已解决]批处理如何将文本中的三列内容左右对齐?

本帖最后由 pcl_test 于 2016-7-31 21:47 编辑

我想问下下面这段代码如何产生空格
http://www.bathome.net/redirect. ... =5932&ptid=1246
原文本:
111111111111111111111 98912 张三
222222222222222222 150020 李四四
333333333333333333333 360000 王五
444444444444444444 2332 赵六六
555555555555555555 222 田七
666666666666666666666 999999 舞吧
1

评分人数

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

本帖最后由 apang 于 2014-1-22 18:19 编辑
  1. @echo off & Setlocal Enabledelayedexpansion
  2. set /a Max1=Max2=0
  3. for /f "tokens=1-3" %%i in (1.txt) do (
  4.     set /a n+=1
  5.     set "_!n!_1=%%i" & set "_!n!_2=%%j" & set "_!n!_3=%%k"
  6.     for %%a in (1 2) do (
  7.         for %%b in (!n!) do (
  8.             set "tmp=!_%%b_%%a!" & set "Len="
  9.             for %%c in (2048 1024 512 256 128 64 32 16) do (
  10.                 if "!tmp:~%%c!" neq "" (
  11.                     set /a Len+=%%c & set "tmp=!tmp:~%%c!"
  12.                 )
  13.             )
  14.             set "tmp=!tmp!fedcba9876543210"
  15.             set /a Len+=0x!tmp:~15,1! + 4
  16.             if !Len! gtr !Max%%a! set "Max%%a=!Len!"
  17.         )
  18.     )
  19. )
  20. for %%a in (1 2) do (
  21.     for /l %%b in (1 1 !Max%%a!) do set "sp%%a=!sp%%a! "
  22. )
  23. for /l %%a in (1 1 %n%) do (
  24.     for %%b in (1 2) do (
  25.         set "s=!_%%a_%%b!!sp%%b!"
  26.         for %%c in (!Max%%b!) do set "str=!str!!s:~,%%c!"
  27.     )
  28.     echo,!str!!_%%a_3!&set "str="
  29. )
  30. pause
复制代码
如果存在中英文混合的列,那就对不齐
1

评分人数

TOP

回复 2# apang


    我不是来找解决方法的而是来学习的,想问的是上面增加空格的那个方式:
set "ke2=!ke2!"

按逻辑不应该是 set "ke2= !ke2!"为什么它那样也能行得通?

你那段代码,我从第九行就开始晕了,你要是愿意解释的话我是很乐意听的。

TOP

回复 2# apang
这里如果确认列数的话 应可忽略最后列的计算

TOP

回复 3# BHsolve
如果这里KE2没有赋值
set "ke2= !ke2!"  等效于  set "ke2=!ke2! "
看你代码 你在前面已经赋值%%i于KE2

TOP

回复 5# terse


  我眼睛拙计已经看明白哪里出问题了,谢谢两位了。
它的空格是加在后面的不是前面,郁闷

TOP

回复 4# terse


    嗯,考虑不周,已修改

TOP

回复 3# BHsolve


    二分法球字符串长度,你可以搜索下。可以减少循环次数,比call效率要高

TOP

回复 2# apang

你好,请问
如果我要扩展到6列都要求左右对齐,该如何修改,谢谢

TOP

返回列表