• 一个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. 从0开始fastjson漏洞分析2

    从0开始fastjson漏洞分析https://www.cnblogs.com/piaomiaohongchen/p/14777856.html 有了前文铺垫,可以说对fastjson内部机制和fas ...

  2. phpstudy2018 开启目录浏览

    废话不多说直接开始 一.打开 vhosts-ini 配置文件 二.加入以下内容  注意填写自己的网站根目录 <Directory "你自己的网站根目录"> Option ...

  3. 简单介绍下自动化框架:Robot Framework

    一.简介: Robot Framework:Robot Framework是由Python编写的一款功能丰富并且扩展性强的自动化测试框架,也可以在Java和 .NET 上运行. HttpRunner: ...

  4. Unity API笔记

    1. 返回某范围的随机数 Random.Range method. static float Range(float min, float max); returns a float – return ...

  5. OO随笔之纠结的第二单元——多线程电梯

    综述 主要任务就是写一个电梯模拟器,读入每一个人的请求然后让电梯把他们送到想去的地方. 从第一次到第三次作业,三次的主要任务都是相同的,但是每次都增加了很多的细节,每次的难度都逐步增长,电梯复杂度和瞎 ...

  6. [并发编程 - socketserver模块实现并发、[进程查看父子进程pid、僵尸进程、孤儿进程、守护进程、互斥锁、队列、生产者消费者模型]

    [并发编程 - socketserver模块实现并发.[进程查看父子进程pid.僵尸进程.孤儿进程.守护进程.互斥锁.队列.生产者消费者模型] socketserver模块实现并发 基于tcp的套接字 ...

  7. select执行顺序

    先from 找到表on过滤 找到两张表有对应关系的记录按join的方式添加外部行where 过滤group by分组having 过滤select 从having 过滤出来的字段中选择需要的字段dis ...

  8. .Net平台的GC垃圾回收

    一.先了解下必备的知识前提 内存中的托管与非托管,可简单理解为: 托管:可借助GC从内存中释放的数据对象(以下要描述的内容点) 非托管:必须手工借助Dispose释放资源(实现自IDisposable ...

  9. 使用 Yarn workspace,TypeScript,esbuild,React 和 Express 构建 K8S 云原生应用(一)

    本文将指导您使用 K8S ,Docker,Yarn workspace ,TypeScript,esbuild,Express 和 React 来设置构建一个基本的云原生 Web 应用程序. 在本教程 ...

  10. 如何使用GoLand debug

    debug 常用操作 /* 如何使用 goland debug goroutine */ package main import ( "fmt" "runtime&quo ...