中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: [出题]娱乐一下~ 上一主题 | 下一主题
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 16 楼』:  



  Quote:
Originally posted by pusofalse at 2008-6-20 04:43 PM:
两位前辈的思路。。真是太棒了~
虽说出题,但里面有几道题我也不会~
第8楼,hat前辈的第一段代码。。。输出所有以abcd开头的行~ 貌似有点思维定向了~

改变一下思维可以吗?
findstr "^abcd" "a.txt"




2008-6-20 16:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 17 楼』:  

1.因为不会用errorlevel,所以只能用笨办法了。
for /f "delims=" %%a in ('net user^|findstr "123"') do (
for %%i in (%%a) do (
if "%%i" equ "123" set user=123
))
if not defined user net user 123 "123 &^" /add

2.跟hat前辈的完全一样。。
3.for /l %%a in (1000 1 1999) do set var=%%a&>>num.txt call,echo %%var:~1%%

set n=-1
:1
set/a n+=1
set m=0000%n%
>>num.txt echo %m:~-3%
if %n% lss 999 goto 1
pause>nul

4.
call :lp tcp 7
call :lp udp 6
pause&goto :eof
:lp
for /f "skip=4 tokens=3,%2 delims=: " %%a in ('netstat -anop %1') do echo %%a &tasklist /fi "pid eq %%b"

5.又跟HAT前辈想一块去了。。

6.开启5个进程同时ping 进程1ping1-10 进程2 ping 11-20 用start给每个进程传递主机ID的参数。。。当然只ping1次

7。
@echo off
:1
set/a n+=1
if %n% gtr 9 pause>nul&exit
for /l %%a in (1 1 %n%) do call :lp %%a %n%

:lp
set/a res=%1*%2
set/p=%1*%2=%res%  <nul
if %1 equ %2 (echo.&goto 1) else goto :eof

8:
不会用sort,再用笨办法- -|||
setlocal enabledelayedexpansion
for /f "delims=" %%a in (1.txt) do set/a n+=1&set !n!=%%a
for /l %%i in (%n% -1 1) do echo !%%i!
pause>nul

9:输入任意字母,然后新建文件,分别以这些个字母命名,然后dir/b/on一下

10.
@echo off
setlocal enabledelayedexpansion
for %%a in (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 z) do (
  set/a n+=1
  set %%a=!n!
)
set/p var=
for %%a in (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 z) do set var=!var:%%a=%%a !
echo %var%
pause
for %%a in (%var%) do set/a res+=!%%a!
echo %res%
pause>nul



心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-6-20 17:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 18 楼』:  这是我的解题思路

汗。。。我何时发了两次。。。- -|||

[ Last edited by pusofalse on 2008-6-20 at 06:41 PM ]

2008-6-20 17:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
PPdos
高级用户




积分 783
发帖 268
注册 2006-12-26
状态 离线
『第 19 楼』:  

第四题较有挑战性 我单发一帖吧



菩提本无树,明镜亦非台,本来无一物,何处惹尘埃.
2008-6-20 21:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 20 楼』:  

第四题,我觉得必须用pid作为中介。。。不知还有没有别的方法。。。



心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-6-20 21:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wxcute
中级用户





积分 458
发帖 211
注册 2006-7-26
状态 离线
『第 21 楼』:  

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

只写了一种(通用,max为最大值,改成你要的数字就行。)
@echo off
cd/d %~dp0

cd.>num.txt
set/a n=0
set/a x=1
set/a max=999
set/a num=%max%

:ui
 set/a num/=10
 if not %num% equ 0 set/a x*=10&&call :add_num wx_1&&goto :ui
set/a wx=%wx_1%+1

setlocal enableDelayedExpansion
:show_list
 set nn=%x%%n%
 echo !nn:~-%wx%,%wx%!>>num.txt
 call :add_num n
 if %n% gtr %max% goto :eof
 goto :show_list

:add_num
 set/a %1+=1
 goto :eof




┌───────┐
├→学习→实践→┤
└───────┘
2008-6-21 23:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 22 楼』:  



  Quote:
Originally posted by wxcute at 2008-6-21 23:35:
Q3:输出000-999到num.txt,最少两种方法

只写了一种(通用,max为最大值,改成你要的数字就行。)
@echo off
cd/d %~dp0

cd.>num.txt
set/a n=0
set/a x=1
s ...

我晕,楼上的是不是搞得太复杂了,本来一句命令就可以搞定的,如下:
@echo off&for /l %%i in (1000,1,1999) do set str=%%i&call,echo %%str:~1%%>>num.txt
或者:
@echo off&for /l %%i in (0,1,999) do set str=00%%i&call,echo %%str:~-3%%>>num.txt
[ Last edited by zw19750516 on 2008-6-21 at 11:51 PM ]



批处理之家新域名:www.bathome.net
2008-6-21 23:43
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
wxcute
中级用户





积分 458
发帖 211
注册 2006-7-26
状态 离线
『第 23 楼』:  

回zw19750516
我是想让P自动计算位数,如:

max=9就输出0-9
max=14就输出00-14
max=495就输出000-495




┌───────┐
├→学习→实践→┤
└───────┘
2008-6-22 12:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 24 楼』:  

::输出第一个以abcd开头的行
@echo off
for /f "delims=" %%a in ('findstr "^abcd" a.txt') do (
   if not defined flag echo %%a
   set flag=%%a
)
::输出第二个以abcd开头的行
@echo off
for /f "delims=" %%a in ('findstr "^abcd" a.txt') do (
   if defined flag echo %%a&pause&exit
   set flag=%%a
)
pause
Q7:输出九九乘法表
@echo off&set .23= &set ".24= "
for /l %%a in (1,1,9) do (
   setlocal enabledelayedexpansion
   for /l %%b in (1,1,%%a) do (
     set /a h=%%a*%%b
     set "m=!m! %%b×%%a=!h!!.%%b%%a!"
   )
   echo.!m!&endlocal   
)
echo\&pause
Q8:倒序输出a.txt中的内容,当a.txt内容位数不一样时就不能用sort了。
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do (
   set %%a=%%b&set w=%%a
)
for /l %%a in (%w% -1 1) do echo.!%%a!
pause
Q9:字母排序,输入任意字母,进行排序 如输入z a u i b,则输出 a b i u z
@echo off
set var=a z c f y b
for %%a in (%var%) do set .%%a=a
for /f "delims=.=" %%a in ('set .') do echo %%a
pause
Q10:计算任意字母之和
@echo off&setlocal enabledelayedexpansion
for %%a in (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 z) do (
   set /a nnn+=1&set %%a=!nnn!&set .!nnn!=%%a
)
set /a www=%random%%%5+1
for /l %%a in (1 1 %www%) do (
  set /a www=!random!%%25+1
  call set /a max+=%%.!www!%%
  call set num=!num!%%.!www!%%
)
echo 随机生成的字母组为 !num!
echo 字母组的数位和为   !max!
pause>nul


   此帖被 +5 点积分       点击查看详情   
评分人:【 pusofalse 分数: +5  时间:2008-6-22 16:35




致精致简!
2008-6-22 13:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 25 楼』:  



  Quote:
Originally posted by 26933062 at 2008-6-22 01:09 PM:
Q9:字母排序,输入任意字母,进行排序 如输入z a u i b,则输出 a b i u z
@echo off
set var=a z c f y b
for %%a in (%var%) do set .%%a=a
for /f "delims=.=" %%a in ('set .') do echo %%a
pause

Nice job!



2008-6-22 19:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qzwqzw
银牌会员

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『第 26 楼』:  

Q1:判断系统中有无123用户,无则添加用户名为123,密码为"123 &^"的普通用户
直接利用应用程序自己的错误处理就可以了
net user 123 "123 &^" /add

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

输出a.txt中所有以abcd开头的行
findstr "^abcd" a.txt

输出第一个以abcd开头的行
findstr "^abcd" a.txt>tmp.dat
set /p tmp=<tmp.dat
echo %tmp%

输出第二个以abcd开头的行
for /f "tokens=1* delims=:" %%i in ('findstr "^abcd" a.txt^|findstr /n ".*"^|findstr "^2:"') do echo %%j

   此帖被 +4 点积分      点击查看详情   
评分人:【 pusofalse 分数: +4  时间:2008-6-23 20:11


2008-6-23 13:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qzwqzw
银牌会员

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『第 27 楼』:  

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

for /l %%i in (0,1,9) do for /l %%j in (0,1,9) do for /l %%k in (0,1,9) do echo %%i%%j%%k>>num.txt

if "%1"=="$$$" (>>num.txt echo %2) else (for /l %%i in (0,1,9) do call %0 $%1 %2%%i)

[ Last edited by qzwqzw on 2008-6-23 at 02:02 PM ]

   此帖被 +1 点积分     点击查看详情   
评分人:【 pusofalse 分数: +1  时间:2008-6-23 20:12


2008-6-23 13:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qzwqzw
银牌会员

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『第 28 楼』:  

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

for /f "tokens=1-3,*" %%a in ('netstat -ano^|find ":123 "') do echo.%%a %%b %%c & tasklist /v /fi "pid eq %%d"
或者

netstat -ab

   此帖被 +3 点积分      点击查看详情   
评分人:【 pusofalse 分数: +3  时间:2008-6-23 20:11


2008-6-23 14:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: