中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: 命令行脚本集成 上一主题 | 下一主题
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『楼 主』:  命令行脚本集成

论坛上有这么多精彩的命令行脚本,其中一些我们可能会在日常使用或调试中用到,所以我写了这个,打算把自已需要使用的集成在一起,以便调用


@ECHO OFF
::以下这句考虑到可能会在别的批处理中调用所以来判断是否已经启用了延缓
IF NOT "%CD%" == "!CD!" SETLOCAL ENABLEDELAYEDEXPANSION

::因为%1-%9的识别特性(有第九个就一定会有第八个)来得到参数的个数
IF NOT [%9] == [] SET /A PVAR+=1
IF NOT [%8] == [] SET /A PVAR+=1
IF NOT [%7] == [] SET /A PVAR+=1
IF NOT [%6] == [] SET /A PVAR+=1
IF NOT [%5] == [] SET /A PVAR+=1
IF NOT [%4] == [] SET /A PVAR+=1
IF NOT [%3] == [] SET /A PVAR+=1
IF NOT [%2] == [] SET /A PVAR+=1
IF NOT [%1] == [] SET /A PVAR+=1

::若没有参数则转向
IF [%PVAR%] == [] GOTO README


:start
::这一小节依大到小来CALL参数来执行

ECHO.
::假设只有一个参数(%1=HT ff),那么这一行转换过来就是CALL :HT ff 2>nul(CALL :%%1~1 2>nul),采用这种方法主要是为了将参数%1在CALL :HT时延续内部参数ff
CALL :%%^~!PVAR! 2>nul

::每执行完一个就减1
SET /A PVAR-=1

::执行完退出
IF NOT %PVAR% LEQ 0 (GOTO :START) ELSE GOTO :EOF


:readme
::这一节纯粹是好玩,类似CMD下的命令帮助
ECHO.
ECHO                EXPANDING TOOLS FOR CMD.EXE [Windows XP SP2]
ECHO.
ECHO usage:
ECHO    %~nx0 "command1 options" "command2 ...... "command9 option1 .... option9"
ECHO.
ECHO command:
FOR /F "delims=:" %%i IN ('FINDSTR /R "^[:][A-Z]*[A-Z]$" %0') DO ECHO    %~nx0 "%%i options"
ECHO.
ECHO syntax examples
ECHO    %~nx0 "HT ff fe fd fc fb fa f0 f9 f8" "TH 999999" "LOS "123456""
ECHO   -...
pause>nul
GOTO :EOF


::以下是我随意添加的一些脚本,你可以将自已常用的加进去
:HT
::这一节是16进制转为10进制
SET /A VAR1=0x00%1,VAR2=0x00%2,VAR3=0x00%3,VAR4=0x00%4,VAR5=0x00%5,VAR6=0x00%6,VAR7=0x00%7,VAR8=0x00%8,VAR9=0x00%9
FOR /L %%i IN (1,1,9) DO SET /p=!VAR%%i! <nul
ECHO ^<^<=%0
GOTO :EOF


:TH
::这一节是十进制转16进制
IF %1 GTR 2099999999 (GOTO :EOF)
SET VAR=0123456789ABCDEF
FOR /L %%i IN (0,1,15) DO (
SET H%%i=!VAR:~%%i,1!)
SET HH=1&SET KK=0&SET TT=%1
:th1
SET /A HV%HH%=%TT%/16,HV%KK%=%TT%%%16
IF !HV%HH%! GTR 16 (SET TT=HV%HH%&&SET /A HH+=1,KK+=1&&GOTO TH1)
SET VAR1=0x00!H%HV9%!!H%HV8%!!H%HV7%!!H%HV6%!!H%HV5%!!H%HV4%!!H%HV3%!!H%HV2%!!H%HV1%!!H%HV0%!
ECHO %VAR1%  ^<^<=%0
GOTO :EOF


:LOS
::得到字符串长度
SET STR=%1&SET VAR1=0
SET STR=%STR:"=X%
:los1
IF NOT "!STR:~%VAR1%,1!" == "" SET /A VAR1=%VAR1%+1&&GOTO LOS1
ECHO %0 == %VAR1%
GOTO :EOF


:SLEEP
::延时
echo q | debug>nul
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>sleep.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY Wv;ovBX2Gv0ExGIuht6>>sleep.com
echo T}{z~~@GwkBG@OEKcUt`~}@MqqBsy?seHB~_Phxr?@zAB`LrPEyoDt@Cj?>>sleep.com
echo pky_jN@QEKpEt@ij?jySjN@REKpEt@jj?jyGjN@SEKkjtlGuNw?p@pjirz>>sleep.com
echo LFvAURQ?OYLTQ@@?~QCoOL~RDU@?aU?@{QOq?@}IKuNWpe~FpeQFwH?Vkk>>sleep.com
echo _GSqoCvH{OjeOSeIQRmA@KnEFB?p??mcjNne~B?M??QhetLBgBPHexh@e=>>sleep.com
echo EsOgwTLbLK?sFU`?LDOD@@K@xO?SUudA?_FKJ@N?KD@?UA??O}HCQOQ??R>>sleep.com
echo _OQOL?CLA?CEU?_FU?UAQ?UBD?LOC?ORO?UOL?UOD?OOI?UgL?LOR@YUO?>>sleep.com
echo dsmSQswDOR[BQAQ?LUA?_L_oUNUScLOOuLOODUO?UOE@OwH?UOQ?DJTSDM>>sleep.com
echo QTqrK@kcmSULkPcLOOuLOOFUO?hwDTqOsTdbnTQrrDsdFTlnBTm`lThKcT>>sleep.com
echo @dmTkRQSoddTT~?K?OCOQp?o??Gds?wOw?PGAtaCHQvNntQv_w?A?it\EH>>sleep.com
echo {zpQpKGk?Jbs?FqokOH{T?jPvP@IQBDFAN?OHROL?Kj??pd~aN?OHROd?G>>sleep.com
echo Q??PGT~B??OC~?ipO?T?~U?p~cUo0x>>sleep.com
sleep.com >sleep.exe
del sleep.com
sleep %1
GOTO :EOF


:test1
echo test1 %1 %2
goto :eof

:test2
echo test2 %1 %2
goto :eof

:test3
echo test3 %1 %2
goto :eof

:test4
echo test4 %1 %2
goto :eof

:test5
echo test5 %1 %2
goto :eof

:test6
echo test6 %1 %2
goto :eof

:test7
echo test7 %1 %2
goto :eof

:test8
echo test8 %1 %2
goto :eof

:test9
echo test9 %1 %2
goto :eof

[ Last edited by everest79 on 2007-2-17 at 04:51 PM ]

2007-1-13 05:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 2 楼』:  

貌似每次我发贴都不大有人回的

2007-1-13 22:32
查看资料  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 3 楼』:  

我来支持你

2007-1-13 22:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复
mackyliu
初级用户





积分 32
发帖 16
注册 2006-10-19
状态 离线
『第 4 楼』:  

没明白这是些啥东东

2007-1-13 23:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 5 楼』:  

谢谢,嘿嘿

2007-1-13 23:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by mackyliu at 2007-1-13 10:47 AM:
没明白这是些啥东东

实现的功能为将一些有用的脚本整合在一个批处理中,通过批处理文件名+参数来进行调用

2007-1-13 23:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
vlanmaster
初级用户





积分 100
发帖 46
注册 2006-12-19
状态 离线
『第 7 楼』:  

我也来支持你。好东西。

2007-1-14 02:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yesmao
初级用户





积分 35
发帖 18
注册 2007-1-14
状态 离线
『第 8 楼』:  

好东西,楼主我支持你

2007-1-14 04:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
degwcwt
新手上路





积分 12
发帖 6
注册 2007-1-11
状态 离线
『第 9 楼』:  ding

严重支持

2007-1-14 08:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xiaohacker
初级用户




积分 110
发帖 45
注册 2007-1-7
状态 离线
『第 10 楼』:  强人

这么强的人,我想给你加分,可惜不能加,每天只能加2分!

2007-1-15 05:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 11 楼』:  

呵呵,我乐

2007-1-15 08:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 12 楼』:  

  兄可以丢个例子出来么?看了半天,一头雾水……

2007-1-15 08:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 13 楼』:  

呵呵,例如将以上脚本保存为etc.cmd
然后执行
etc "ht ff"     ;ht 16进制转换10进制
etc "th 255"  ;th 10进制转16进制
etc "sleep 10000" ;sleep 延时10000ms
etc "los "123456"" ;los 取得字符串长度
以上命令的返回结果是变量var1
也可以使用复合命令
etc "ht ff fe fd f9 f7" "th 99876" "los" "los "987654321"" "sleep 10000"
因为这里返回变量被覆盖,所以var1是最后一个命令的结果
ht命令一共可以返回9个结果 var1-var9

2007-1-15 08:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tsmirs
初级用户





积分 23
发帖 9
注册 2007-1-22
状态 离线
『第 14 楼』:  

看不懂,顶一下

2007-1-23 04:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sadawn
初级用户





积分 39
发帖 14
注册 2007-1-19
状态 离线
『第 15 楼』:  

脚本集合吗

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


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



论坛跳转: