中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 适用于读取名称的横向列表批处理
作者:
标题: 适用于读取名称的横向列表批处理 上一主题 | 下一主题
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『楼 主』:  适用于读取名称的横向列表批处理

列表排列方式为一行5个(XPSP2测试通过)

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

姓名1::
姓名:[姓名姓名]
......
-End-

姓名2::
姓名:[姓名2   ]
......
-End-

姓名3::
姓名:[姓名3   ]
......
-End-

姓名4::
姓名:[姓名4   ]
......
-End-

姓名5::
姓名:[姓名5   ]
......
-End-

姓名6::
姓名:[姓名6   ]
......
-End-

姓名7::
姓名:[姓名7   ]
......
-End-

姓名8::
姓名:[姓名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


2006-12-30 09:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 2 楼』:  

  这个代码和那个通讯录有关系吧?暂时还不明白具体有什么作用。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-12-30 10:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 3 楼』:  

差不多,这是做另外一个批处理时编写的(人数不少,强度不小^_^|||),可以5个一行整版排列名字,方便查看(纯CMD的),可以直接按编号选取;以前只能一个名字一行,数量多就太长了。

[ Last edited by zh159 on 2006-12-29 at 09:42 PM ]

2006-12-30 10:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 4 楼』:  



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

推荐用vbs了

2006-12-30 13:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 5 楼』:  

也想用VBS,不过不会-_-|||
而且好像VBS没有合适的多选界面
用IE界面当然比较方便,不过通用性不够强

2006-12-30 14:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: