大家论坛

 找回密码
 注册
查看: 4424|回复: 3

批处理 常用子过程、函数收集

[复制链接]

312

主题

444

帖子

3003

金币

大家网大学二年级

Rank: 15Rank: 15Rank: 15

积分
1843
发表于 2010-5-18 11:36 | 显示全部楼层 |阅读模式
  1. @echo off
  2. set TA=%time%&echo %time%--A
  3. pause::这里一般插入自己的代码段。
  4. set TB=%time%&echo %time%--B
  5. call:Timediff %TA% %TB% TAB

  6. echo 时间点A到时间点B的时间差为:%TAB%秒
  7. pause>nul&exit/b
  8. ::/* -----------------Timediff ----------------------
  9. :Timediff [time1] [time2|par] [par]
  10. setlocal enabledelayedexpansion
  11. :timediff_1
  12. set P2=%~1&set "P2=!P2::=!"
  13. set/a P2=%P2:.=%-4000*(%P2:~,4%+60*%P2:~,2%)
  14. if not "%3"=="" set P1=!P2!&shift&goto:timediff_1
  15. if !P2! geq !P1! (set/a df=!P2!-!P1!) else set/a df=!P2!-!P1!+8640000
  16. set/a h=df/360000,m=df%%360000/6000,s=df%%6000/100,pt=df%%100
  17. if %pt% leq 9 set pt=0%pt%
  18. endlocal&set %2=%h%:%m%:%s%.%pt%&goto:eof
  19. :: -------------------Timediff --------------------- */
复制代码
下面分析Timediff
通用:用它可以测试自己编写的代码的执行时间,从而可以判断自己的代码是否高效。
高效:这个函数不可能频繁地使用,所以它不存在这方面的问题。
      即使频繁被调用它的效率也非常高,因为它总共只用到了12次set赋值语句,两个逻辑判断。
封装:函数中用到的变量只在函数内有效。它也可以当一个批处理文件来使用。
简洁:够简洁了。

最后,函数共享时能尽量详细:我仍然已Timediff做为例子:

原型:
  1. ::/* -----------------Timediff ----------------------

  2. ::最好能给出参数是否符合要求的判定代码,(虽然这个在使用时可能会被省去)
  3. ::但这个代码应该非常高效,用findstr的命令肯定不行
  4. for %%a in (+%1 +%2 +%3)do if "%%a"=="+" echo 参数缺失!&exit/b
  5. ::参数列表,[]、|、小写、大写字母、的含义同cmd里面的含义,我不多说。
  6. :Timediff [%t1%] [%t2%] [par|0]
  7. ::这个很必要,最起码要给个setlocal,保证参数只在本函数内有效。
  8. setlocal enabledelayedexpansion

  9. ::下面是函数体
  10. :timediff_1
  11. set P2=%~1&set "P2=!P2::=!"
  12. set/a P2=%P2:.=%-4000*(%P2:~,4%+60*%P2:~,2%)
  13. if not "%3"=="" set P1=!P2!&shift&goto:timediff_1
  14. if !P2! geq !P1! (set/a df=!P2!-!P1!) else set/a df=!P2!-!P1!+8640000
  15. set/a h=df/360000,m=df%%360000/6000,s=df%%6000/100,pt=df%%100
  16. if %pt% leq 9 set pt=0%pt%

  17. ::结束本函数内变量的作用域,同时将返回参数赋给变量,使它在函数外有效。
  18. endlocal&if %2.==0. (echo\%h%:%m%:%s%.%pt%) else set %2=%h%:%m%:%s%.%pt%&goto:eof
  19. :: ------------------- Timediff --------------------- */
复制代码
shell, perl, python, ...
回复

使用道具 举报

312

主题

444

帖子

3003

金币

大家网大学二年级

Rank: 15Rank: 15Rank: 15

积分
1843
 楼主| 发表于 2010-5-18 11:38 | 显示全部楼层
Colstr 单行彩色字符控制输出

函数详解:
  1. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2. ::输出彩色字符
  3. ::call:Colstr <attr> <sp> <"str"> <bk> <sp> <enter>  
  4. ::               |     |     |      |    |     |
  5. ::             颜色   空格  字符串   退格  空格 回车换行
  6. ::效率:      约18次/s  (XP 5.1/2.4GHz/256M)  
  7. ::算法简述:findstr /a .... (提供了好几万种颜色)
  8. ::     set/p=<nul>输出不换行退格字符,"<nul"实现单行彩色. 退格字符”删“冒号.
  9. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  10. ::说明:
  11. ::   attr   16进位数字颜色属性。请参考16进位数字颜色属性配置演示代码。
  12. ::   sp     范围:{0,正整数} 表示输出空格的格数
  13. ::  "str"   要显示的字符串。注意当字符串中含有空格时带上双引号。
  14. ::   bk     范围:{正整数} 退格数,即光标左移位数,若设定左移位数为0,函数将强制转换为1
  15. ::   sp     范围:{0,正整数} 0将输出1个冒号,其他正整数表示空格数
  16. ::   enter  范围:{0,正整数} 0表示不换行(光标不动),其他正整数表示<enter>个数
  17. ::   字符串中可以包含除/\:*?,<>|"字符外的任何字符,但不可以全是“空格”或“.”等。
  18. ::   判断字符串是否合法的一个有效的办法是看它是否可以作为文件名来使用
  19. ::   请勿试图尝试不合法的参数,函数只保证合法的参数有正确的效果。
  20. ::   另外,对某些特殊要求可以尝试用0100色(黑色)字符来“隐藏”冒号
  21. ::例:
  22. ::call:colstr 0c 3 "abcdef" 1 2 2
  23. ::用0c色(鲜红色)依次输出3个空格 abcdef: [光标左移1位] 2个空格 2个回车换行符。
  24. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
复制代码
原型:
  1. :: /*-------------- Colstr -----------------
  2. :Colstr <attr> <sp> <"str"> <bk> <sp> <enter>
  3. for %%a in (+%2 +%4 +%5 +%6) do (
  4.    if "%%a"=="+" echo 控制参数不能为空&exit/b
  5.    if %%a lss +0 echo 参数越界-&exit/b
  6.    if %%a geq +a echo 参数越界+&exit/b)
  7. if %3 == "" echo 字符串不能为空&exit/b
  8. pushd %tmp%&setlocal ENABLEEXTENSIONS
  9. if exist "%~3?" del/a/q "%~3?">nul 2>nul
  10. if %2 gtr 0 call:%0_bs %2 sp " "&call set/p=%%sp%%<nul
  11. if %4 gtr 0 (call:%0_bs %4 bk "") else set "bk="
  12. call:%0_bs %5 sp " "
  13. set/p=%bk%%sp%<nul>"%~3"&findstr /a:%1 .* "%~3?" 2>nul
  14. if not %6 equ 0 for /l %%a in (1 1 %6)do echo.
  15. endlocal&popd&goto:eof
  16. :Colstr_bs
  17. set "p="&for /l %%a in (1 1 %1)do call set "p=%%p%%%~3"
  18. set "%2=%p%"&goto:eof
  19. :: --------------- Colstr ----------------*/
复制代码
使用举例:(如果是将函数做为P文件使用,将call后面的:改为空格即可)
  1. @echo off
  2. ::Colstr函数演示。
  3. mode con lines=24 cols=69
  4. set s=I am from www.TopSage.com

  5. echo\&echo\&echo\&echo\&echo\&echo\&echo/
  6. call:colstr e 15 "%s%" 0 1 0
  7. call:colstr 0100 0 0 17 0 0
  8. title 按任意键继续...&pause>nul
  9. call:colstr a 1 "大家网" 0 1 0
  10. call:colstr c 0 "%s:~-15%" 0 1 9
  11. pause>nul
  12. call:colstr 2c 21 "谢谢测试!    有bug请吱一声" 0 1 9
  13. title TopSage.com

  14. pause>nul&exit/b
复制代码
shell, perl, python, ...
回复 支持 反对

使用道具 举报

312

主题

444

帖子

3003

金币

大家网大学二年级

Rank: 15Rank: 15Rank: 15

积分
1843
 楼主| 发表于 2010-5-18 11:40 | 显示全部楼层
ANY2VBS
  1. TargetFileName="*.*"
  2. MD5=...
  3. HexString=...
  4. Set oStream = CreateObject("Adodb.Stream")
  5. Hex2Bin HexString,TargetFileName
  6. Sub Hex2Bin(strHex,strFileName)
  7. Set objStream = Createobject("Adodb.Stream")
  8. Set objXML = Createobject("Microsoft.XMLDOM")
  9. Set objElement = objXML.CreateElement("oTmpElement")
  10. objElement.DataType = "bin.hex"
  11. objElement.NodeTypedValue = strHex
  12. With objStream
  13. .Type = 1
  14. .Mode = 3
  15. .Open
  16. .Write objElement.NodeTypedValue
  17. .SaveToFile strFileName
  18. End With
  19. End Sub
复制代码
目前最全的Regsvr32命令集锦,可解决不少问题
  1. 1/出现“lscw.exe应用程序(Procedures)(Procedures)错误”
  2. 解决途经:在“开始→运行”中键入“regsvr32 C:\GENERSOFT\LSCW\gif89.dll”(当中C:\GENERSOFT\LSCW为安装路径,请参照您的安装路径进行更改),然后单击“确定”,重新启动操作系统就可以了.
  3. II.IE不能打开新的窗口,用鼠标单击超链接也没有任何反应.
  4. 解决途经:在“开始→运行”中键入“regsvr32 actxprxy.dll”系统命令,单击“确定”按钮.然后再在“开始→运行”中键入“regsvr32 shdocvw.dll”系统命令,单击“确定”就可以了.
  5. III.全部修复IE浏览器(解决网页显示不完整,JAVA效果(Effect)不出现,网页不自动跳转,打开某一些网站时总提示‘根本没有办法显示该页’等)
  6. 在“开始→运行”中依次键入以下系统命令并“确定”执行
  7. regsvr32 Shdocvw.dll  
  8. regsvr32 Oleaut3II.dll  
  9. regsvr32 Actxprxy.dll  
  10. regsvr32 Mshtml.dll  
  11. regsvr32 Urlmon.dll
  12. regsvr32 browseui.dll
  13. IV.解决Windows根本没有办法在线升级的基本问题
  14. 在“开始→运行”中键入“regsvr32 wupdinfo.dll”,单击“确定”按钮.重新启动操作系统后解决问题.
  15. V.防范网络脚本病毒的新招(禁用FSO对像)
  16. 在“开始→运行”中键入“regsvr32 /u scrrun.dll” 单击“确定”按钮;如果需要恢复使用FSO对像,键入“regsvr32 scrrun.dll”系统命令就可以了.
  17. VI.卸载Win XP自带的ZIP功能,以减少操作操作系统资源消耗
  18. 在“开始→运行”中键入“regsvr32 /u zipfldr.dll”,单击“确定”按钮;要恢复ZIP功能,键入“regsvr32 zipfldr.dll”就可以了.
  19. VII.让Windows Media Player支持RM格式
  20. 以Win XP为例,最开始下载一个RM格式插件,解压缩后得到两个文件夹:Release(用于Windows 9x)和Release Unicode (用于Windows 2000/XP);将Release Unicode文件夹下的RealMediaSplitter.ax文件拷贝到“C:\WINDOWS\System32\”目录下;在“开始→运行”中键入“regsvr32 RealMediaSplitter.ax”,单击“确定”就可以了.接着下载解码器,如Real Alternative,安装后就可以用WMP播放RM格式的影音文件了.
  21. 8,修复根本没有办法缩略图查看文件问题
  22. 2000:开始→运行,输入regsvr32 thumbvw.dll
  23. XP:开始→运行,输入regsvr32 shimgvw.dll;禁用缩略图查看文件,则输入regsvr32   /u shimgvw.dll
  24. 9,解决打开操作操作系统功能时无反应(有时从开始菜单里单击XP操作操作系统“搜索”,“帮助和支持”或“管理工具”等,但就是根本就没有任何反应)
  25. 开始→运行,输入regsvr32 shdocvw.dll
  26. 10,添加/彻底删除程序(Procedures)(Procedures)打不开(打开“控制面板”中的“添加/彻底删除程序(Procedures) (Procedures)”,双击他的图标后无反应,或者打开后自动关闭)
  27. 开始→运行,依次输入regsvr32 appwiz.cpl  
  28. regsvr32 mshtml.dll  
  29. regsvr32 j.dll  
  30. regsvr32 msi.dll  
  31. regsvr32 "c:\Program Files\Common Files\System\Ole DB\Oledb3II.dll"
  32. regsvr32 "c:\Program Files\Common Files\System\Ado\Msado1V.dll"
  33. regsvr32 mshtmled.dll  
  34. regsvr32 /i shdocvw.dll
  35. regsvr32 /i shell3II.dll
  36. 11,浏览器不支持脚本或是Windows Media Player打开时提示“出现内部应用程序(Procedures)(Procedures)错误”等问题.当然了,下面的系统命令还有一些意想不到的作用,譬如WIN 2000下“添加/彻底删除程序(Procedures)(Procedures)”打开后一片空白等.
  37. 开始→运行,依次输入regsvr32 j.dll,regsvr32 vb.dll
  38. 1II.根本没有办法从右键菜单启动操作系统网际快车或迅雷
  39. 网际快车:注册fgiebar.dll和Jccatch.dll动态连接库,
  40. 迅雷:注册WebBrowserEx.dll和WebBrowserEx.dll以及boost_thread-vc6-mt-1_3I.dll
  41. 注册方法:
  42. 从程序(Procedures)(Procedures)文件中把以上所需dll文件拷贝到Windows安装路径的system32/目录下,然后在 “开始-运行”中输入“regsvr32 刚刚拷贝的.dll文件”就可以了.
  43. 1III.恢复“电脑的桌面显示”(我们会不小心把快速启动操作系统栏中的“显示电脑的桌面”的图标彻底删除)
  44. 开始→运行,输入regsvr32 /n /i:u shell32
  45. 1IV.XP的控制面板中的“用户帐户”选项根本没有办法打开
  46. 开始→运行,依次输入regsvr32 nusrmgr.cpl
  47. regsvr32 mshtml.dll
  48. regsvr32 jscript.dll
  49. regsvr32 /i shdocvw.dll
  50. 1V.Intel集成显卡的电脑的桌面右键菜单迟缓的基本问题
  51. 开始→运行,输入regsvr32 /u igfxpph.dll
  52. 1VI.关闭AVI等影片的预览功能(有的朋友预览时会弹出explorer出错,可以用这一个方法)
  53. 开始→运行,输入regsvr32 /u shmedia.dll
  54. 1VII.禁止Windows scripting host(爱虫病毒就是靠他来发作的)
  55. 开始→运行,依次输入regsvr32/u wshom.ocx
  56. regsvr32/u wshext.dll
  57. 18,解决计算机内存不能为read等问题,一次注册所有dll文件操作操作系统文件
  58. 操作操作系统dll文件没有注册,可能引起各种各样各样不可知的基本问题,譬如根本没有办法打开二级链接,经常出现“计算机内存不能为read或 written”等错误.如何一下把所有的dll文件重新注册一遍呢?
  59. 运行中输入cmd,在系统命令提示符下输入:
  60. for %1 in (%windir%\system32\*.dll) do regsvr3II.exe /s %1
  61. 19,拯救失落的“搜索”
  62. 开始→运行,输入“regsvr32 urlmon.dll”,回车后,重新运行搜索窗口,就可以了恢复.
  63. 20,纠正IE保存mht网页错误
  64. 单击Internet Explorer“文件→另存为”系统命令菜单,在“保存类型”中选择(Choose)“Web电子邮件档案(.mht)”格式后保存文件错误.
  65. 开始→运行,输入“regsvr32 inetcomm.dll”,回车就可以了解决.
  66. 如果在使用 OE时提示“根本没有办法启动操作系统Outlook Express;电脑计算机内存不足或磁盘已满,请与Microsoft支持部门联系以获取更多的帮助 (0x8007000E,14000)”,单击“确定”后又弹出“MSOE.dll根本没有办法初始化,Outlook Express根本没有办法启动操作系统等也可通过这一个方法解决.
  67. 21,在使用Windows Update更新操作时,提示“IEXPLORE错误”,根本没有办法继续更新操作
  68. 最开始在运行输入框中输入“regsvr32 /u wuv3is.dll”反注册此链接库,接着进入“C:\Program Files\Windows Update”,彻底删除wuv3is.dll文件.最后重新执行Windows Update操作,操作操作系统会重新生成wuv3is.dll文件,错误提示也不怎么会再弹出.
  69. 2II.Microsoft Windows media player 10损坏了,每次启动操作系统都提示“出现了内部应用程序(Procedures)(Procedures)错误”
  70. 开始→运行,输入regsvr32 jscript.dll修复Java动态链接库
  71. 再输入regsvr32 vbscript.dll修复VB动态链接库
  72. 2III.MSN根本没有办法登录(Logon)(不一定有效)
  73. 开始→运行,输入regsvr32 softpub.dll
  74. 2IV.取消inter显卡电脑的桌面右键菜单
  75. 开始→运行,输入“regsvr32 /u igfxpph.dll” ;如果想恢复就输入“regsvr32 igfxpph.dll”
  76. 2V.不能阅读HTML帮助文件的解决
  77. 开始→运行,输入regsvr32 c:\Microsoft Windows\system32\hhctrl.ocx
  78. 2VI.恢复Windows默认的文件关联
  79. 开始→运行,依次输入
  80. rundl32l setup.dll,InstallHinfSection DefaultInstall 132 c:\Microsoft Windows\inf\shell.inf
  81. regsvr3II.exe /i shdocvw.dll
  82. regsvr32 /i shell3II.dll
  83. regsvr3II.exe /i shdoc40I.dll
  84. 2VII.彻底彻底删除"我的文档"
  85. 开始→运行,输入regsvr32 /u mydocs.dll;想要恢复输入regsvr32 mydocs.dll
  86. 28,彻底删除Live Messenger共享(Sharing)文件夹
  87. 开始→运行,输入regsvr32 /u "C:\Program Files\MSN Messenger\fsshext.dll";想要恢复输入regsvr32 "C:\Program Files\MSN Messenger\fsshext.dll"
  88. 29,彻底删除多媒体文件右键(排队,添加到播放列表,复制到CD或设备...)
  89. 开始→运行,输入regsvr32 /u wmpshell.dll;想要恢复输入regsvr32 wmpshell.dll -------
复制代码
防止cmd被杀

ren cmd.exe cnd.exe

运行bat文件方法:

cnd/c my.bat

法二:

ftype/?

assoc/?

cnd="C:\mytool\notepad2.exe" %1 %*
assoc .bat=cnd

----006 真正的全屏打开网页
start "" "%systemdrive%\program files\internet explorer\iexplore.exe" -k "www.baidu.com

----007 进入一些特别的路径
我的电脑
       start ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
网络邻居
       start ::{208D2C60-3AEA-1069-A2D7-08002B30309D}
我的文档
       start ::{450D8FBA-AD25-11D0-98A8-0800361B1103}
回收站
       start ::{645FF040-5081-101B-9F08-00AA002F954E}

----008 禁用/解禁任务管理器
禁用:
    reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\system /v DisableTaskMgr /t REG_DWORD /d 00000001
解禁:
    reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\system /v DisableTaskMgr /f

----009 弹出光驱
mshta "javascript:new ActiveXObject('WMPlayer.OCX').cdromCollection.Item(0).Eject();window.close();"

----010 右键添加 "新建 zjw.bat" (不需重启)
reg add HKCR\.bat\ShellNew /v nullfile /f >nul
reg add HKCR\batfile /ve /d zjw /f >nul

----011 右键添加打开MS-DOS (不需重启)
reg add "HKCR\*\shell\ms-dos" /ve /d ms-dos /f
reg add "HKCR\*\shell\ms-dos\command" /ve /d "cmd.exe /k cd %%1" /f
reg add "HKCR\Folder\shell\ms-dos" /ve /d ms-dos /f
reg add "HKCR\Folder\shell\ms-dos\command" /ve /d "cmd.exe /k cd %%1" /f

----012 显示/隐藏扩展名
显示:
    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t reg_dword /d 00000000 /f
隐藏:
    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t reg_dword /d 00000001 /f

----013 显示/隐藏 文件
显示:
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Hidden /t reg_dword /d 1 /f
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t reg_dword /d 0 /f
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v ShowSuperHidden /t reg_dword /d 1 /f
                      ***第一句是显示一般隐藏文件,后两句加上就是显示系统隐藏文件
隐藏:将键值改“非“就可以了
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Hidden /t reg_dword /d 0 /f
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t reg_dword /d 1 /f
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v ShowSuperHidden /t reg_dword /d 0 /f
                      ***刷新后就隐藏了

----014 用*.inf 实现重启
echo [version] > reboot.inf
echo signature=$chicago$ >> reboot.inf
echo [defaultinstall] >> reboot.inf
rundll32 setupapi,InstallHinfSection DefaultInstall 1 reboot.inf
del reboot.inf


standard cout of string or number
  1. @echo off||author:plp626&setlocal enabledelayedexpansion
  2. for /l %%a in (1 1 50)do (
  3. set/a n=%%a%%5
  4. if !n!==0 echo.
  5. call:CoutSN "ss!random!" 8 r
  6. )
  7. pause
  8. exit

  9. :CoutSN ["str"] [num] [L|R] <\n> <return>
  10. setlocal enabledelayedexpansion
  11. set str=%~1& set num=%2& set LR=%3& set "sp="
  12. for /l %%a in (1 1 %num%)do set "sp= !sp!"
  13. :CoutSNLoop
  14. set str=%str:~1%& set "sp=%sp:~1%"
  15. if defined str goto:CoutSNLoop
  16. if /i %LR%.==R. (set str=%sp%%~1) else (set str=%~1%sp%)
  17. if %4.==\n (echo %str%) else (set/p %5=%str%<nul)
  18. exit/b 0
复制代码
CMD下修改IP地址和网关
修改网关的命令如下:
cmd /c netsh interface ip set address name=" 本地连接" source=static addr=192.168.1.2 mask=255.255.255.0 gateway=192.168.1.1 gwmetric=1
修改DNS
cmd /c netsh interface ip set dns name="本地连接" source=static addr=61.134.1.34

类似贴:
DOS下修改IP
C:\>ipconfig (首先用ipconfig这个命令看一下更改之前的ip地址)

Windows 2000 IP Configuration

Ethernet adapter 本地连接:

Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.0.250 (本地连接更改之前的ip)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.0.1

PPP adapter 拨号连接:

Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 211.149.128.147
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . : 211.149.128.147

C:\>netsh (然后执行netsh这个命令)
netsh>interface (netsh命令的子命令)
interface>ip (interface命令的子命令)
interface ip>set (interface ip命令的子命令)

下列指令有效:

此上下文中的命令:
set address - 设置指定的接口的 IP 地址或默认网关。
set dns - 设置 DNS 服务器模式和地址。
set wins - 设置 WINS 服务器模式和地址。
interface ip>set address "本地连接" static 192.168.0.2 255.255.255.0 192.168.0.1

计算圆周率任意位
  1. @echo off&title 计算圆周率
  2. setlocal enabledelayedexpansion
  3. if not %1.==. (set c=%1) else set c=100
  4. set/a c=(c*100/3)+70,cc=c/10,count=0
  5. for /l %%a in (1 1 %cc%)do set/a f_%%a=2000
  6. for /l %%a in (%c% -132 100)do (set/a n=%%a/10,m=2*n-1
  7. set/a "d=f_!n!*10000,f_!b!=d%%m,d=d/m,n-=1"
  8. for /l %%b in (!n! -1 1)do (set/a n=%%b,m=2*n-1
  9.    set/a "d=d*n+f_!n!*10000,f_!n!=d%%m,d=d/m,n-=1"
  10. )
  11. set/a "an=e+d/10000,e=d%%10000"
  12. if !an! lss 1000 set an=000!an!
  13. set/p=!an:~-4!<nul
  14. )
复制代码
退格键的另外一种输出方法
  1. @echo off&title 请关闭此窗口 Code By plp626&if not %1.==. goto%*
  2. for /f "delims=" %%a in ('cmd /s/k "prompt $h&%~s0 :x"')do echo.%%a>tuige.txt
  3. :x
复制代码
shell, perl, python, ...
回复 支持 反对

使用道具 举报

312

主题

444

帖子

3003

金币

大家网大学二年级

Rank: 15Rank: 15Rank: 15

积分
1843
 楼主| 发表于 2010-5-18 11:42 | 显示全部楼层
上网常用
  1. @echo off
  2. ::右键添加"用记事本打开"
  3. reg add "hkcr\*\shell\OpenInNotepad" /f /ve /d 用记事本打开
  4. reg add "hkcr\*\shell\OpenInNotepad\command" /f /ve /d "notepad.exe %%1"
  5. ::右键添加"打开命令提示符"
  6. reg add "HKCR\*\shell\OpenInMsdos" /ve /d 打开命令提示符 /f
  7. reg add "HKCR\*\shell\OpenInMsdos\command"  /ve /d "cmd.exe /k cd %%1" /f
  8. reg add "HKCR\Folder\shell\OpenInMsdos" /ve /d 打开命令提示符 /f
  9. reg add "HKCR\Folder\shell\OpenInMsdos\command" /ve /d "cmd.exe /k cd %%1" /f
  10. ::右键添加"新建test.bat"
  11. reg add HKCR\.bat\ShellNew /v nullfile /f
  12. reg add HKCR\batfile /ve /d test /f
复制代码
显示系统启动的时间.vbs
  1. for each os in getobject _
  2. ("winmgmts:\\.\root\cimv2:win32_operatingsystem").instances_
  3. wscript.echo os.lastbootuptime:next
复制代码
开机时间:net statistics workstation

上次开关机时间,本次开机时间:
  1. strComputer = "."
  2. Set objWMIService = GetObject("winmgmts:" _
  3. & "{impersonationLevel=impersonate}!\\" _
  4. & strComputer & "\root\cimv2")
  5. Set colLoggedEvents = objWMIService.ExecQuery _
  6. ("Select * from Win32_NTLogEvent " _
  7. & "Where Logfile = 'System' And EventCode = '6005' Or EventCode = '6006'")
  8. For Each objEvent In colLoggedEvents
  9.     Flag = Flag + 1
  10.     If Flag = 1 Then
  11.         Wscript.Echo "本次开机时间: " & FormatWMIUTC(objEvent.TimeWritten)
  12.     ElseIf Flag = 2 Then
  13.         Wscript.Echo "上次关机时间: " & FormatWMIUTC(objEvent.TimeWritten)
  14.     ElseIf Flag = 3 Then
  15.         Wscript.Echo "上次开机时间: " & FormatWMIUTC(objEvent.TimeWritten)
  16.         Exit For
  17.     End If
  18. Next

  19. 'FormatUTC
  20. Function FormatWMIUTC(WMIDateString)
  21.     DS = " // :: "
  22.     FormatWMIUTC = Left(WMIDateString,2)
  23.     For i = 2 To 7
  24.         FormatWMIUTC = FormatWMIUTC & Mid(WMIDateString, i * 2 - 1, 2) & Mid(DS,i,1)
  25.     Next
  26.     'FormatWMIUTC = Mid(WMIDateString, 1, 4) & "年" _
  27.     '            & Mid(WMIDateString, 5, 2) & "月" _
  28.     '            & Mid(WMIDateString, 7, 2) & "日 " _
  29.     '            & Mid (WMIDateString, 9, 2) & ":" _
  30.     '            & Mid(WMIDateString, 11, 2) & ":" _
  31.     '            & Mid(WMIDateString,13, 2)
  32. End Function
复制代码
  1. @echo off
  2. ::复制系统某类型文件到指定目录内
  3. if not exist vbs md vbs
  4. for /f "delims=" %%a in ('dir/a-d/s/b c:\*.vbs')do call:arr "%%a"
  5. exit
  6. :arr
  7. set "n="
  8. if exist "vbs\%~nx1" call:ren %*
  9. echo f|xcopy /h "%~1" "vbs\%~n1%n%%~x1"
  10. exit/b

  11. :ren
  12. set n=1
  13. :ren_1
  14. if exist "vbs\%~n1_%n%%~x1" set/a n+=1&goto:ren_1
  15. set n=_%n%&goto:eof
复制代码
  1. ::显示IP
  2. mshta "javascript:alert(new ActiveXObject("rcbdyctl.Setting").GetIPAddress);window.close();"
复制代码
刷新DNS:ipconfig /flushdns
  1. '目标文件名
  2. Const TargetFileName="fugai-def-files.rar"
  3. Const MD5="...
  4. ...."
  5. Set oStream = CreateObject("Adodb.Stream")
  6. Hex2Bin HexString,TargetFileName
  7. Sub Hex2Bin(strHex,strFileName)
  8. Dim objStream,objXML,objElement
  9. Set objStream = Createobject("Adodb.Stream")
  10. Set objXML = Createobject("Microsoft.XMLDOM")
  11. Set objElement = objXML.CreateElement("oTmpElement")
  12. objElement.DataType = "bin.hex"
  13. objElement.NodeTypedValue = strHex
  14. With objStream
  15. .Type = 1
  16. .Mode = 3
  17. .Open
  18. .Write objElement.NodeTypedValue
  19. .SaveToFile strFileName
  20. End With
  21. End Sub
复制代码
  1. '来个VBS,保存成download.vbs可以直接在命令行中执行
  2. 'On Error Resume Next
  3. Dim fso, s, FileName, URL, HTML, cdo

  4. URL = "http://www.cn-dos.net" '需要下载的页面路径
  5. FileName = "C:\test\" & CStr(Year(Now) & Month(Now) & Day(Now)) & ".mht" '保存的文件名

  6. Set cdo = CreateObject("cdo.Message")
  7. cdo.CreateMHTMLBody URL, 31
  8. Set s = cdo.GetStream
  9. s.SaveToFile FileName, 2
  10. s.Close
  11. msgbox("完成")
复制代码
shell, perl, python, ...
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

诚聘英才|移动端|Archiver|版权声明|大家论坛 ( 京ICP备06071611号,京公网安备11010802018363号 )

GMT+8, 2021-9-24 02:04 , Processed in 0.458534 second(s), 22 queries .

Powered by Discuz!

© Comsenz Inc.

快速回复 返回顶部 返回列表