当前位置:网站首页 / bat / 正文

[AY-Bat]写给自己的Bat笔记-冷却[6]

时间:2015年11月11日 | 作者 : aaronyang | 分类 : bat | 浏览: 1360次 | 评论 0

2015年11月11日    ====== AYUI www.ayjs.net AY 杨洋原创编写,请不要转载谢谢==

1  外观控制

颜色,窗体行列,标题

blob.png

打开上节课的bat8.bat

@echo off
setlocal EnableDelayedExpansion
@color 17
@mode con cols=80 lines=50
@title AYJS.NET bat讲解

set /p command=输入一个命令给bat8_1用:
call bat8_1.bat %command%
pause

blob.png


2015年11月11日    ====== AYUI www.ayjs.net AY 杨洋原创编写,请不要转载谢谢==

2.SETLOCAL    开辟一个作用.域

开始批处理文件中环境改动的本地化操作。在执行 SETLOCAL 之后 所做的环境改动只限于批处理文件。要还原原先的设置,必须执行 ENDLOCAL。 达到批处理文件结尾时,对于该批处理文件的每个 

尚未执行的 SETLOCAL 命令,都会有一个隐含的 ENDLOCAL 被执行。例: 

@ECHO OFF 
SET PATH /*察看环境变量PATH 
PAUSE 
SETLOCAL 
SET PATH=E:\TOOLS /*重新设置环境变量PATH 
SET PATH 
PAUSE 
ENDLOCAL 
SET PATH

从上例我们可以看到环境变量PATH第1次被显示得时候是系统默认路径。被设置成了E:\TOOLS后显示为E:\TOOLS但当ENDLOCAL后我们可以看到他又被还原成了系统的默认路径。但这个设置只在该批处理运行的时候有作用。当批处理运行完成后环境变量PATH将会还原 



3. 符号(|) 是一个管道传输命令意思是将上一命令执行的结果传递给下一命令去处理

C:\>dir c:\|find "1508" 

卷的序列号是 301A-1508 

以上命令的意思为查找c:\的所有并发现1508字符串。Find的用法请用 find /?自行查看 

在不使用format的自动格式化参数的时候我是这样来自动格式化盘片的 

echo y|fornat a: /s /q /v:system 

用过format命令的人都知道format有一个交互对化过程,要使用者输入y来确定当前的命令是否被执行。在这个命令前加上echo y并用管道传输符|将echo执行的结果y传递给format从而达到手工输入y的目的(这条命令有危害性,测试的时候请谨慎) 



那么下面列举一个扫描文件bat讲解,这是我从网上找的

@echo off
setlocal EnableDelayedExpansion
setlocal
@color 2E
@mode con cols=60 lines=30
@title 自动扫描工具 黑客学习基地【专版】
:start
cls
echo.
echo.
echo ---------------------请选择要执行的操作---------------------
echo.
echo -----1.使用TCP方式扫描
echo -----2.使用SYN方式扫描
echo -----3.关闭系统防火墙
echo -----4.退出本程序
echo.
echo.
echo 提示:☆ XP系统用户选择TCP方式
echo       ☆ 非XP系统用户选择SYN方式
echo       ☆ 扫描前请关闭您的防火墙
echo.
echo.

:scan
set num=
set /p num=请选择要执行的操作:
if "!num!"=="1" goto 1
if "!num!"=="2" goto 2
if "!num!"=="3" goto 3
if "!num!"=="4" goto 4
Echo 选择无效,请重新输入
Echo.
Goto scan



:1
cls
set xiancheng=
set duankou=
set /p xiancheng=请输入线程数(通常500左右):
if "!xiancheng!"=="" goto 1    //如果线程输入为空,则继续输入
set /p duankou=请输入要扫描的端口(1—65535):
if "!duankou!"=="" goto 1      //如果端口输入为空,则继续输入
if exist 扫描结果.txt del 扫描结果.txt
if exist ip.txt del ip.txt
if not exist ip.txt echo 请输入ip段,例如:192.168.0.1 192.168.0.254>ip.txt&ip.txt
echo 按“Y”键开始扫描……
pause >nul
cls
echo. 
echo  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
echo  正在用TCP方式进行扫描中..............
echo  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
echo. 
for /f "eol= tokens=1,2 delims= " %%i in (ip.txt) do s.exe tcp %%i %%j %duankou% %xiancheng% /save
for /f "eol=- tokens=1 delims= " %%i in (result.txt) do echo %%i>>s1.txt
for /f "eol=P tokens=1 delims= " %%i in (s1.txt) do echo %%i>>s2.txt
for /f "eol=S tokens=1 delims= " %%i in (s2.txt) do echo %%i>>扫描结果.txt
del s1.txt
del s2.txt
del Result.txt
goto end



:2
cls
set duankou=
set /p duankou=请输入要扫描的端口(1—65535):
if "!duankou!"=="" goto 2      //如果端口输入为空,则继续输入
if exist 扫描结果.txt del 扫描结果.txt
if exist ip.txt del ip.txt
if not exist ip.txt echo 请输入ip段,例如:192.168.0.1 192.168.0.254>ip.txt&ip.txt
echo 按“Y”键开始扫描……
pause >nul
cls
echo. 
echo  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
echo  正在用SYN方式进行扫描中..............
echo  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
echo. 
for /f "eol= tokens=1,2 delims= " %%i in (ip.txt) do s.exe syn %%i %%j %duankou% /save
for /f "eol=- tokens=1 delims= " %%i in (result.txt) do echo %%i>>s1.txt
for /f "eol=P tokens=1 delims= " %%i in (s1.txt) do echo %%i>>s2.txt
for /f "eol=S tokens=1 delims= " %%i in (s2.txt) do echo %%i>>扫描结果.txt
del s1.txt
del s2.txt
del Result.txt
goto end


:3
@net stop sharedaccess >nul
cls
echo 防火墙已被关闭,按任意键返回主菜单!
pause >nul
goto start

:4
exit

:end
cls
echo.
echo.
echo ------------------扫描完毕,请选择后续操作------------------
echo -----1.打开扫描结果
echo -----2.返回主菜单
echo -----3.退出本程序
echo.
echo.
set houxiu=
set /p houxiu=请选择要执行的操作:
if "!houxiu!"=="1" 扫描结果.txt
if "!houxiu!"=="2" goto start
if "!houxiu!"=="3" exit
goto end

大致学习: 通过:和goto控制流程

通过> 大于号 写入文件,类似C++的语言

if not exist ip.txt echo 请输入ip段,例如:192.168.0.1 192.168.0.254>ip.txt&ip.txt

这行代码,将     请输入ip段,例如:192.168.0.1 192.168.0.254写入ip.txt然后&符号代表打开ip.txt,然后你就可以看到写入的过程.

   重定向符号有两个:>和>>。它们的作用都是改变各种信息的输出方向,把信息输出到指定的地方去——各种提示信息默认是输出到屏幕上去的。例如:我们上节使用到的 tree>list.txt,这条命令语句就把 tree 命令的运行结果重定向到了list.txt文件中,tree>nul 就把 tree 命令的提示信息重定向到了空设备中去(nul表示空设备,通常,这种 >nul 空定向应用于屏蔽结果回显,如 copy 的“1个文件已经成功复制”等


和>>虽然都起到重定向提示信息的作用,但是,它们的作用稍有差别。

     单个的>表示以覆盖方式重定向提示信息,也就是说如果目的地原来有内容,将把原来的内容清除掉,用新内容填充。

     >>表示以追加的方式重定向提示信息,也就是说,如果目的地原来有内容,原有的内容将保持不变,在原有内容之后追加新内容



 shutdown -s 关机


  分割字符串,以查看时间为例

       %源字符串:~起始值,截取长度%  (起始值从0开始;截取长度是可选的,如果省略逗号和截取长度,将会从起始值截取到结尾;

       截取长度如果是负数,表示截取到倒数第几个。)

    "%time%"      显示如:"11:04:23.03" (完整的时间"hh:mm:ss.tt")
      "%time:~0,5%" 显示"hh:mm"(即"11:04"),其中0表示从右向左移位操作的个数,5表示从左向右移位操作的个数
      "%time:~0,8%" 显示标准时间格式"hh:mm:ss"(即"11:04:23",前8个字符串)
      "%time:~3,-3%"显示"mm:ss"(即从第4个开始,截去最后3个的字符串)
      "%time:~3%"   显示"04:23.03"(即去掉前4个字符串)
      "%time:~-3%"  显示".tt"(即最后3个字符串)

替换字符串

set a="abcd1234"
       echo %a%          显示:"abcd1234"
       set a=%a:1=kk%    替换“1”为“kk”
       echo %a%          显示:"abcdkk234"

 字符串合并

  set str1=%str1%%str2%    (合并 str1 和 str2)

计算字符串长度

没有现成的函数。如下程序利用 goto形成循环,不断将字符串截短1,并记录截短的次数,到字符串变成空时的次数即长度。
       set testStr=This is a test string
       :: 将 testStr 复制到str,str 是个临时字符串
       set str=%testStr%
       :: 标签,用于goto跳转
       :next1
       :: 判断str是不是空,如果不是则执行下边的语句
       if not "%str%"=="" (
       :: 算术运算,使num的值自增1,相当于num++或者++num语句
       set /a num+=1
       :: 截取字符串,每次截短1
       set "str=%str:~1%"
       :: 跳转到next1标签: 这里利用goto和标签,构成循环结构
       goto next1
       )
       :: 当以上循环结构执行完毕时,会执行下边的语句
       echo testStr=%testStr%
       echo testStr的长度为:%num%

截取字符串时,需要传递参数

 setlocal enabledelayedexpansion
       echo !args:~%num%,-5!
六、注册表操作
    1) 备份注册表,将[HKEY_LOCAL_MACHINE ... Run]的内容,备份到“c:\windows\1.reg”

       reg export HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ c:\windows\1.reg
       reg export HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ c:\windows\2.reg
    2) 修改/添加注册表内容
       a.一般的添加或修改

       reg add "HKCU\Environment" /v Java_Home /t reg_sz /d "D:\Java\jdk1.6.0_07" /f
         上句解析:“HKCU”是“HKEY_CURRENT_USER”的缩写,不用缩写用全称也可以;
         添加名称为“Java_Home”的变量;类型为“reg_sz”,另一种常见类型是“reg_dword”;值为 D:\Java\jdk1.6.0_07;
       b.使用变量
          SoftWareHome=HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java
         reg add "%SoftWareHome%Web Start\1.6.0_07" /v Home /t reg_sz /d "%cd%\jre1.6.0_07\bin" /f
       c.如果注册表的名称有空格,或者数据用特殊符号时
       reg add "%SoftWareHome2%\HelpCommands" /v "01:Online Documentation" /t reg_sz /d "\"%cd%\Documentation\Index.htm\"" /f
         传入值为(值用双引号括起来的):"D:\ProgramFiles\1.work_soft\Sybase\PowerDesigner_12\Documentation\Index.htm"
         reg add "%SoftWareHome2%\Paths" /v ReportTemplates /t reg_sz /d "%cd%\Resource Files\Report Templates\\" /f
         传入值为(“\”结尾的): E:\Holemar\1.notes\90. Windows\Resource \Report Templates\
       d.增加空的内容
         reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\IMJPMIG8.1"
       e.添加或修改默认值
         reg add "%vpath%InstallPath" /ve /t reg_sz /d "%cd%" /f
     这里用“/ve”来代替一般修改时的“/v 变量名”,即可修改默认值了
    3) 删除注册表的内容
      双引号里面的是注册表的目录,下面两句将删除这目录下的所有信息
      reg delete "HKEY_CURRENT_USER\Software\RealVNC" /f
      reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC" /f
      双引号里面的是注册表的目录,下面一句将删除这目录下指定的某个信息
      reg delete "HKEY_LOCAL_MACHINE\Software\RealVNC" /v VNC_Server /f
    4) 注册表的常用位置
       a.系统启动项:
         [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
         [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]

     example: REG ADD HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run /v VNC_Server /t REG_SZ /d "%cd%\VNC_Server.bat" /f
       b.系统环境变量:
         [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
       c.当前用户的环境变量:
         [HKEY_CURRENT_USER\Environment]
    5) 修改注册表之后,结束并重新加载explorer.exe进程,可刷新注册表,令其生效

       taskkill /f /im explorer.exe >nul
        "" "explorer.exe"



2015年11月11日    ====== AYUI       www.ayjs.net      AY         杨洋原创编写,请不要转载谢谢==

推荐您阅读更多有关于“bat批处理,”的文章

猜你喜欢

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  查看权限

抖音号:wpfui,可以看到我的很多作品效果

AYUI8社区版Github地址:前往获取

作者:杨洋(AaronYang简称AY,安徽六安人)目前是个人,还没公司AY唯一QQ:875556003和AY交流

高中学历,2015年1月17日开始,兴趣学习研究WPF

声明:AYUI7个人与商用免费,源码可购买。部分DEMO不免费.AY主要靠卖技术服务挣钱

不是从我处购买的ayui7源码,我不提供任何技术服务,如果你举报从哪里买的,我可以帮你转正为我的客户,并送demo

查看捐赠

AYUI7.X MVC教程 更新如下:

第一课 第二课 程序加密教程

兼容XP到win10,vs2015/2019,最新AYUI:7.6.5.2

vs2015 企业版密钥HM6NR-QXX7C-DFW2Y-8B82K-WTYJV

vs2017 企业版密钥NJVYC-BMHX2-G77MM-4XJMR-6Q8QF

标签列表