• 一个dos批处理脚本,通过关键字搜索注册表并删除,坑很多,语法也很怪异,详情看注释
@echo off
::声明采用UTF-8编码,避免中文乱码问题,>NUL可以吞掉chcp输出的内容
chcp 65001 >NUL set key_word="hello"
set recursive=1
set end_key_word=End ::now let us do it.
echo "--------------------------------------------------------------------------------------------" call :search_del_reg_func HKEY_CLASSES_ROOT
call :search_del_reg_func HKEY_CURRENT_USER
call :search_del_reg_func HKEY_LOCAL_MACHINE
call :search_del_reg_func HKEY_USERS
call :search_del_reg_func HKEY_CURRENT_CONFIG
goto :end_print ::search and delete the regedit function
:search_del_reg_func
set search_path=%1
set reg_cmd="REG QUERY %search_path% /f %key_word% /s "
::not recursive
if %recursive%==0 (
echo Scanning normally... key_word:%key_word% Root Path: %search_path%
set reg_cmd="REG QUERY %search_path% /f %key_word% "
)else (
echo Scanning recursivly... key_word:%key_word% Root Path: %search_path%
) FOR /F "tokens=* " %%a IN ('%reg_cmd%') do (
::使用block的方式来执行,因为for里面不能使用goto,会破坏for循环结构
call :for_func %%a %%b
echo:
echo:
)
goto :eof :: for loop's block
:for_func
set item="%1"
set flags=%item:~1,3%
set flags=%flags:"=%
if "%flags%"=="%end_key_word%" (
goto end_flags
) if "%flags%"=="" (
goto end_flags
) ::延迟userinput的解析,在dos里面,()里面的代码会被提前解析,如果不设置该选项的话,会导致%choice%里面的东西始终是空的
setlocal EnableDelayedExpansion set item="%1"
set /p choice=Really delete[**%1**]? y=yes n=no:
::没有真正的or,所以用这种很挫的方式来实现
if "!choice!"=="y" goto delete_reg
if "!choice!"=="yes" goto delete_reg
if "!choice!"=="n" goto not_del_reg
if "!choice!"=="no" goto not_del_reg
goto not_del_reg :delete_reg
reg delete %item% /f
echo WARNNING: You just deleted reg[%item%]!!!!!
goto end_flags :not_del_reg
echo INFO: You omit this reg [%item%]!!!
goto end_flags :end_flags
endlocal goto :eof :end_print
echo "-------------------------------------OVER---------------------------------------------------"

dos脚本语法学习的更多相关文章

  1. shell脚本语法学习

    以下内容仅为个人学习使用,如有错误,欢迎指出 持续更新............... 一.首先创建.sh文件,打开并在文件的第一行输入#!/bin/sh 执行shell文件命令为: . filenam ...

  2. shell脚本语法基础汇总

    shell脚本语法基础汇总 将命令的输出读入一个变量中,可以将它放入双引号中,即可保留空格和换行符(\n) out=$(cat text.txt) 输出1 2 3 out="$(cat te ...

  3. 详细介绍Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...

  4. Robot Framework语法学习(一)

    Robot Framework语法学习: 一.变量的声明.赋值与使用 1.变量标识符:每个变量都可以用  变量标识符 ${变量名} 来表示. 2.变量声明:可以在TestSuite上点右键或者在Edi ...

  5. Lua 脚本语法说明(转)

    Lua脚本语法说明(增加lua5.1部份特性) Lua 的语法比较简单,学习起来也比较省力,但功能却并不弱. 所以,我只简单的归纳一下Lua的一些语法规则,使用起来方便好查就可以了.估计看完了,就懂得 ...

  6. Shell脚本编程学习入门 02

    Shell脚本编程学习入门是本文要介绍的内容,我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):   #! ...

  7. Wshshell 脚本简单学习

    WshShell 的简单语法 学习 同事给了一个脚本自动执行  部署命令 感觉挺好的 , 年前一直说要学习一下 但是一直没有学习(自己太懒了) 这次简单总结一下. 创建对象: Set WshShell ...

  8. Lua脚本语法说明(转)

    Lua脚本语法说明(增加lua5.1部份特性) Lua 的语法比较简单,学习起来也比较省力,但功能却并不弱. 所以,我只简单的归纳一下Lua的一些语法规则,使用起来方便好查就可以了.估计看完了,就懂得 ...

  9. Lua脚本语法说明(转):

    Lua脚本语法说明(增加lua5.1部份特性) 转自:http://www.cnblogs.com/ly4cn/archive/2006/08/04/467550.html Lua 的语法比较简单,学 ...

随机推荐

  1. blazor发布之后 刷新404的解决方法

    其实所有单页面应用都一样 只需要在nginx里面配置 location / { root html; index index.html index.htm; rewrite ^/.*/$ / last ...

  2. [bug] jupyter notebook:服务在阿里云上启动,本地浏览器无法访问

    问题 在阿里云上装了个jupyter,服务正常启动了,但网页上无法访问 排查 安全组已经设置过了,7777端口 在宝塔面板查看,发现7777端口并没有开,打开就可以访问了 原来阿里云的安全组和防火墙是 ...

  3. grub救援模式

    http://www.jinbuguo.com/linux/grub.cfg.html

  4. 桌面支持qt版本是多少检查

    桌面支持qt版本是多少 # rpm -qa |grep qt |grep 3 |sortqt3-3.3.8b-60.nd7.2.x86_64qt-4.8.6-13.nd7.3.x86_64qt5-qt ...

  5. shell基础之综合练习

    0.脚本一键完成下面所有操作1.准备2台centos7系统的服务器,远程互相免密登录,以下所有题目过程中开启防火墙2.给1号机和2号机使用光盘搭建本地yum源(永久生效)3.给服务器1添加2块硬盘,1 ...

  6. STM32独立看门狗(IWDG)

    造成程序跑飞,只是程序的正常运行状态被打断而进入死循环,从而使单片机控制的系统无法正常工作.看门狗就是一种专门用于检测单片机程序运行状态的硬件结构. STM32内部自带了两个看门狗,独立看门狗(IWD ...

  7. fprintf函数

    描述 C 库函数 int fprintf(FILE *stream, const char *format, ...) 发送格式化输出到流 stream 中. 声明 下面是 fprintf() 函数的 ...

  8. 10.10 traceroute:追踪数据传输路由状况

    traceroute命令 用于显示网络数据包传输到指定主机的路径信息,追踪数据传输路由状况.默认数据包大小是60字节(IPv4)或80字节(IPv6),用户可另行设置.它与Windows下的trace ...

  9. 自动升压降压充电模块 最高25.2V

    https://item.taobao.com/item.htm?id=39845484484 锂电池 https://item.taobao.com/item.htm?id=531166780681 ...

  10. Go语言之main包

    Go语言的代码通过包(package)组织,包类似于其他语言里的库(libraries)或者模块(modules).一个包由位于单个目录下的一个或多个go源文件组成,目录定义包的作用.每个源文件都以一 ...