中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-13 19:26
楼 主 [出题]娱乐一下~ 发表于 2008-06-19 21:34 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
UID 115804
性别 男
状态 离线
10道题,如下,是我从学习批处理以来积攒的几个比较经典的题目,供新手练习,老手复习。有兴趣的可以来做一下~无兴趣的请无视。^_^

Q1:判断系统中有无123用户,无则添加用户名为123,密码为"123 &^"的普通用户

Q2:
a.txt:
abcdefg
123abcd
abcd123
abcdefg
asdfghabcda
1234

输出a.txt中所有以abcd开头的行
输出第一个以abcd开头的行
输出第二个以abcd开头的行


Q3:输出000-999到num.txt,最少两种方法

Q4:输入端口号,输出对应进程。如输入135,则输出svchost.exe的详细信息,要求代码同时兼容TCP与UDP端口

Q5:判断光驱所在的盘符,最少两种方法

Q6:编写批处理,6秒钟内找出局域网内主机ID为1-50之间所有在线的主机,网络ID未知。

Q7:输出九九乘法表

Q8:
倒序输出b.txt中的内容,如b.txt:
a
b
c
d
e
f
g
倒序输出:
g
f
e
d
c
b
a

Q9:字母排序,输入任意字母,进行排序 如输入z a u i b,则输出 a b i u z

Q10:计算任意字母之和,如输出azy,输出52 输入cd,输出7
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2 发表于 2008-06-19 22:18 ·  中国 重庆 渝中区 联通
初级用户
★★
积分 198
发帖 89
注册 2007-09-06 23:22
UID 96746
性别 男
来自 重庆
状态 离线
Q8:
@echo off
for /f "tokens=1* delims=:" %%i in ('findstr/n ".*" b.txt^|sort/r') do echo.%%j
pause>nul


[ Last edited by WANKOILZ on 2008-6-19 at 10:31 PM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
pusofalse +3 2008-06-19 22:28
3 发表于 2008-06-19 22:23 ·  中国 湖北 武汉 电信
新手上路
积分 2
发帖 1
注册 2008-06-19 21:46
UID 120607
性别 男
状态 离线
新来的

完全不会做的说~~~
4 发表于 2008-06-19 22:26 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
UID 115804
性别 男
状态 离线
Originally posted by WANKOILZ at 2008-6-19 10:18 PM:
Q8:
@echo off
for /f "tokens=1* delims=:" %%i in ('findstr/n ".*" b.txt^|sort/r') do echo %%j
pause>nul

高! 用sort排序。。。可惜,我对sort完全不懂~ 集合中为何不直接sort/r b.txt?为何先要读取出行数呢~? 我试了下直接排序完全可以啊~ 也完全可以不用for
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
5 发表于 2008-06-19 22:33 ·  中国 重庆 渝中区 联通
初级用户
★★
积分 198
发帖 89
注册 2007-09-06 23:22
UID 96746
性别 男
来自 重庆
状态 离线
这样可以显示空行,而直接用sort会忽略空行。
6 发表于 2008-06-19 22:37 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
UID 115804
性别 男
状态 离线
原来如此~^_^ 谢谢指教~
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
7 发表于 2008-06-20 08:37 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
Q1:判断系统中有无123用户,无则添加用户名为123,密码为"123 &^"的普通用户

@echo off
net user 123 >nul 2>nul
if "%errorlevel%" neq "0" (
net user 123 "123 &^" /add
)
8 发表于 2008-06-20 08:46 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
Q2:
a.txt:
abcdefg
123abcd
abcd123
abcdefg
asdfghabcda
1234

输出a.txt中所有以abcd开头的行
输出第一个以abcd开头的行
输出第二个以abcd开头的行

@echo off
rem 输出a.txt中所有以abcd开头的行
for /f "delims=" %%a in ('findstr "^abcd" "a.txt"') do (
echo %%a
)
rem 输出第一个以abcd开头的行
echo.
for /f "delims=" %%a in ('findstr "^abcd" "a.txt"') do (
echo %%a
goto :next
)
:next
rem 输出第二个以abcd开头的行
echo.
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('findstr "^abcd" "a.txt"') do (
set /a row+=1
if "!row!" equ "2" (
echo %%a
goto :eof
)
)
9 发表于 2008-06-20 09:03 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
Q3:输出000-999到num.txt,最少两种方法

@echo off
type nul>num.txt
for /l %%a in (0,1,999) do (
if %%a lss 10 (
>>num.txt echo 00%%a
) else if %%a lss 100 (
>>num.txt echo 0%%a
) else (
>>num.txt echo %%a
)
)


@echo off
type nul>num.txt
set str=1000
:add
>>num.txt echo %str:~-3%
set /a str+=1
if %str% lss 2000 goto :add
10 发表于 2008-06-20 09:17 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
Q5:判断光驱所在的盘符,最少两种方法

@echo off
for %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
fsutil fsinfo drivetype %%a: | findstr /i "CD">nul && echo 光驱盘符:%%a
)


@echo off
for /f "tokens=2 delims==" %%a in ('wmic LogicalDisk where "DriveType='5'" get * /value ^| findstr /i "^DeviceID"') do echo 光驱盘符:%%a
11 上来晚了 发表于 2008-06-20 10:50 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
UID 112398
性别 男
状态 离线
真高兴又能上联盟了,这阵子生活中真像少了什么东西似的,这下好了。。。
解答Q9,还是用sort快点:

@echo off
set code=abcdefghijklmnopqrstuvwxyz
cd.>temp.txt
:begin
set /a a=%random%%%26
call,set a=%%code:~%a%,1%%
findstr "%a%" temp.txt>nul&&goto begin||echo %a%>>temp.txt
set var=%var% %a%
set /a n+=1
if %n% lss 10 goto begin
echo 排序前为:%var:~1%
echo.
for /f "delims=" %%i in ('sort temp.txt') do call,set str=%%str%% %%i
echo 排序后为:%str:~1%
pause>nul&del temp.txt


[ Last edited by zw19750516 on 2008-6-20 at 11:36 AM ]
批处理之家新域名:www.bathome.net
12 发表于 2008-06-20 11:12 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
UID 112398
性别 男
状态 离线
解答Q7(九九法则表):

@echo off&setlocal enabledelayedexpansion
set "var=+ - * /"
for /f "tokens=1-4 delims= " %%a in ("%var%") do call :lp %%a %%b %%c %%d
pause>nul&goto :eof
:lp
for /l %%i in (1,1,9) do (
for /l %%j in (1,1,%%i) do (
set /a a=%%i%1%%j
if !a! lss 10 set a= !a!
set str=!str! %%i%1%%j=!a!
if %%i equ %%j echo !str!&set "str="
)
)
if "%1" equ "/" goto :eof
shift
goto lp


[ Last edited by zw19750516 on 2008-6-20 at 03:05 PM ]
批处理之家新域名:www.bathome.net
13 发表于 2008-06-20 12:06 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
UID 112398
性别 男
状态 离线
Q10:

@echo off&setlocal enabledelayedexpansion
set codes=a b c d e f g h i j k l m n o p q r s t u v w x y a
set code=%codes: =%
:begin
set /a a=%random%%%26,b=%random%%%10+1
set a=!code:~%a%,1!
echo %var%|findstr "%a%">nul&&goto begin
set var=%var%%a%
set /a n+=1
if %n% lss %b% goto begin
set n=0
echo 随机生成的字母组为:%var%
echo.
:lp
set a=%var:~,1%
set str=%str% %a%
set var=%var:~1%
if defined var goto lp
set str=%str:~1%
for %%a in (%codes%) do (
call,set /a n+=1
for %%i in (%str%) do (
if "%%a" equ "%%i" set /a num+=!n!
)
)
echo 字母组的数位和为:%num%
pause>nul
批处理之家新域名:www.bathome.net
14 发表于 2008-06-20 12:25 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
UID 112398
性别 男
状态 离线
解答Q6:

@echo off
set t=%time%
for /f "tokens=14-16 delims=:." %%i in ('ipconfig /all^|findstr /c:"IP Address"') do set str=%%i.%%j.%%k.
set str=%str:~1%&arp -d
for /l %%i in (1,1,50) do start /min ping /n 1 %str%%%i>nul
arp -a|findstr "dynamic"
echo %t%
echo %time%
pause>nul


[ Last edited by zw19750516 on 2008-6-20 at 12:53 PM ]
批处理之家新域名:www.bathome.net
15 发表于 2008-06-20 16:43 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
UID 115804
性别 男
状态 离线
两位前辈的思路。。真是太棒了~
虽说出题,但里面有几道题我也不会~
第8楼,hat前辈的第一段代码。。。输出所有以abcd开头的行~ 貌似有点思维定向了~
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
论坛跳转: