中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-07-14 21:42
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 将文档内容,横列变为纵列 查看 1,924 回复 19
16 发表于 2007-08-20 16:18 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
那样的话,我的脚本输出的效果是很整齐的……
17 发表于 2007-08-20 18:05 ·  中国 四川 自贡 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
Originally posted by 26933062 at 2007-8-20 14:43:
namejm 版主
你的下划线还是没显示出来啊
输出格式还是很不整齐,这也正是我昨晚卡壳的地方.
我的思路是,在设变量前,先判断该变量有几个字符,来决定该在前面加几个空格.
其实应该不难,但怎么就是搞不对.

  下划线无须在结果中显示出来。

  我那个 set /p 语句 <nul 前是跳格键,在论坛里会被转换为空格,复制下来之后,请重新手工设置为跳格键,否则,将起不到对齐的效果。不过,跳格键默认占用8字节,所以,如果每个元素的字节小于8个,无须判断字符数的多少就可以对齐显示,如果大于等于8个就很难看了。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
18 发表于 2007-08-20 18:12 ·  中国 中电华通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
对齐的问题:
借用namejm的代码:

@echo off
set /a num=0,_num=0,max=0
setlocal enabledelayedexpansion
for /f "delims=" %%i in (test.txt) do (
set /a num+=1,_num=0
for %%j in (%%i) do (
set /a _num+=1
set str!num!_!_num!=%%j
if !_num! geq !max! set max=!_num!
)
)
for /l %%i in (1,1,%max%) do (
set "res="
for /l %%j in (1,1,%num%) do (
set "var=!str%%j_%%i! "
set "res=!res!!var:~0,5!"
)
echo !res!
)
pause
19 发表于 2007-08-20 20:12 ·  中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
记得在chinaunix上有个用gawk写的,那个效率应该快多了
20 发表于 2007-08-20 20:42 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
Originally posted by youxi01 at 2007-8-20 18:12:
对齐的问题:
借用namejm的代码:


你们太强了,这样的代码我是怎么也想不出来的了.
绕了一大堆弯,效率低不说,还不能解决问题....唉!
致精致简!
论坛跳转: