中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-02 22:48
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 适用于读取名称的横向列表批处理 查看 784 回复 4
楼 主 适用于读取名称的横向列表批处理 发表于 2006-12-30 09:41 ·  中国 广西 南宁 联通
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
列表排列方式为一行5个(XPSP2测试通过)

列表.db(限制:名称必须是固定长度,不够的可加空格,这个是在输入的时候限制好的,目的是为了读取方便)

:名称列表
========================================

姓名1::
姓名:
......
-End-

姓名2::
姓名:
......
-End-

姓名3::
姓名:
......
-End-

姓名4::
姓名:
......
-End-

姓名5::
姓名:
......
-End-

姓名6::
姓名:
......
-End-

姓名7::
姓名:
......
-End-

姓名8::
姓名:
.......
-End-


横向名称列表批处理

@echo off
title 横向名称列表
setlocal EnableDelayedExpansion

set Num=1
for /f "skip=3 tokens=1,2* delims=:" %%i in (列表.db) do (
set %%i!Num!=%%j
if "%%i" == "-End-" set /a Num+=1
)
set /a Num-=1
cls
echo.
echo. 横向名称列表
echo. ----------------------------------------------------------------------------
for /l %%n in (1,1,%Num%) do (
set /a NumList=%%n%%5
if "!NumList!" == "0" call :List %%n)
set /a NumEnd=%Num%%%5
if "%NumEnd%" == "0" goto End

set /p=echo. <nul>ListEnd.bat
set EndN=
call :ListEnd
set /a Num=%Num%/5*5
for /l %%n in (1,1,5) do set /a Numn%%n=%Num%+%%n
for %%n in (Numn1 Numn2 Numn3 Numn4 Numn5) do if !%%n! LSS 10 (set %%n= !%%n!) else set %%n=!%%n!
call ListEnd.bat
del ListEnd.bat

:End
echo. ----------------------------------------------------------------------------
pause
exit

:List
set Numn=4
for /l %%n in (1,1,5) do set /a Numn%%n=%1-!Numn!&&set /a Numn-=1
for %%n in (Numn1 Numn2 Numn3 Numn4 Numn5) do if !%%n! LSS 10 (set %%n= !%%n!) else set %%n=!%%n!
echo. %Numn1%: !姓名%Numn1: =%! ∣%Numn2%: !姓名%Numn2: =%! ∣%Numn3%: !姓名%Numn3: =%! ∣%Numn4%: !姓名%Numn4: =%! ∣%Numn5%: !姓名%Numn5: =%!
goto :eof

:ListEnd
set /a EndN+=1
set Numn=Numn%EndN%
set /p=%%%Numn%%%: ^^!姓名%%%Numn%: =%%^^! <nul>>ListEnd.bat
if "%NumEnd%" == "1" (goto :eof) else set /p=∣<nul>>ListEnd.bat
set /a NumEnd-=1
goto ListEnd
2 发表于 2006-12-30 10:27 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  这个代码和那个通讯录有关系吧?暂时还不明白具体有什么作用。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
3 发表于 2006-12-30 10:41 ·  中国 广西 南宁 联通
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
差不多,这是做另外一个批处理时编写的(人数不少,强度不小^_^|||),可以5个一行整版排列名字,方便查看(纯CMD的),可以直接按编号选取;以前只能一个名字一行,数量多就太长了。

[ Last edited by zh159 on 2006-12-29 at 09:42 PM ]
4 发表于 2006-12-30 13:17 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线

这是做另外一个批处理时编写的(人数不少,强度不小^_^|||)

推荐用vbs了
5 发表于 2006-12-30 14:17 ·  中国 广西 南宁 联通
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
也想用VBS,不过不会-_-|||
而且好像VBS没有合适的多选界面
用IE界面当然比较方便,不过通用性不够强
论坛跳转: