学习批处理命令——添加“显示|不显示 隐藏文件”右键菜单

       最近,重装了Windows7系统,windows7如果要显示隐藏的文件,需在“文件夹选项”的“查看”页的“高级设置”中将“显示隐藏文件及文件夹、驱动器”选中。这个“显示隐藏的文件”的操作很不方便,于是自然想到将其放到右键菜单中。在网上搜了下相关资料,也下了一些添加“显示|隐藏文件”右键菜单的程序,如window7优化大师,但他们要么有问题,要么将系统文件也给显示出来了。想到这个功能实现起来很简单,就是修改注册表相关项,添加一个右键菜单,以前也一直想学习批处理命令,何不写个批处理命令来实现它!

       说干就干,在网上找到了一篇很有用的文章:http://bbs.wuyou.com/viewthread.php?tid=128552通过对它的学习,很快就被我鼓捣出来了添加“显示|不显示 隐藏文件”右键菜单的批处理文件。源文件如下:

 

@echo off
title 安装"不显示|显示 隐藏文件"右键菜单

:begin
cls
mode con cols=60 lines=35
echo.

echo   ***********“不显示|显示 隐藏文件”右键菜单***********
echo   *                                                     *
echo   *                                                     *
echo   *                     1.安装                          *
echo   *                                                     *
echo   *                     2.卸载                          *
echo   *                                                     *
echo   *                     0.退出                          *
echo   *                                                     *
echo   *         Author:tht           QQ:245806497           *
echo   *                                                     *
echo   *         Blog:http://blog.csdn.net/tht2009           *
echo   *                                                     *
echo   *******************************************************
echo.

:menu
echo.
set /p select=请选择:
if %select%==0 exit
if %select%==1 goto install
if %select%==2 goto uninstall
echo 选择无效,请从新输入!
goto menu


:install
echo.
set filename=%SystemRoot%\ShowHideFile.vbs
echo 正在安装执行脚本(ShowHideFile.vbs)……

echo Dim WSHShell>%filename%

echo Set WSHShell = WScript.CreateObject("WScript.Shell")>>%filename%

echo if WshShell.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden") = 1 then>>%filename%

echo WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden", "2", "REG_DWORD">>%filename%

echo else WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden", "1", "REG_DWORD">>%filename%

echo end if>>%filename%
echo WSHShell.SendKeys("{F5}")>>%filename%
echo Set WSHShell=Nothing>>%filename%

echo WScript.Quit(0)>>%filename%

echo.
echo 正在创建右键菜单……

reg add HKEY_CLASSES_ROOT\Directory\Background\shell\show /d "显示/不显示 隐藏文件" /f

echo.
echo 正在关联右键菜单……

reg add HKEY_CLASSES_ROOT\Directory\Background\shell\show\command /d "WScript C:\\Windows\\ShowHideFile.vbs" /f

echo.
if exist %filename% echo 安装成功!
goto end

:uninstall
echo.
set filename=%SystemRoot%\ShowHideFile.vbs
if exist %filename% (
echo.
echo 正在删除执行脚本……
del %filename%)
echo.
echo 正在删除注册表中相关项……
reg delete HKEY_CLASSES_ROOT\Directory\Background\shell\show /f
echo.
echo 卸载成功!

:end
echo.
pause
goto begin


(注:上述代码在windows7上执行成功,在XP上需修改59、64行)

 

运行截图和结果图如下:

                                       

 

另附上学习批处理命令的整理笔记:

 

一、常见批处理命令

命令

说明

REM

注释,注释内容能回显

::(:后接非字母数字)

注释,注释内容即使在回显状态打开时也不显示注释内容

:label(:后接字母数字)

标号(标签),goto语句可以识别

%注释内容%

行内注释,不常用,慎用

@命令

关闭后接命令的回显

echo  (后接:①on/off

②为空

③信息内容

④. 即echo.

⑤答复语|命令文件名

⑥文件内容 >/>> 文件名

⑦打印机控制码/打印内容>PRN

⑧^G(可多个)

)

① 打开/关闭 回显功能(在DOS下能打开关闭命令提示符)

②显示当前回显状态

③输出提示的信息内容

④输出回车换行(. 还可用 , : ; ” / [ \ ] +等替代)

⑤预置答复语作为人机对话的命令输入,如 echo Y|del tht.txt

⑥新建文件/增加文件内容

⑦控制打印机

⑧使喇叭鸣响

pause

暂停执行之后的命令直到有输入

echo  %errorlevel%

查看上个命令执行后的返回码:0,成功;1,出错

title 标题

设置cmd窗口标题

color  attr (控制台颜色属性,attr为两个十六进制数字,

第一个为背景,第二个为前景,如果为空则恢复默认颜色,

如果前景与背景颜色一样,该命令会将errorleval置为1)

设置控制台前景与背景色,颜色取值如下:

0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色

7=白色 8=灰色 9=淡蓝色 A=淡绿色 B=淡浅绿色 C=淡红色

D=淡紫色 E=淡黄色 F=亮白色

mode

配置系统设备,如mode con[:] cols=113 lines=20 设置显示模式

goto

跳转

find

在指定文件中查找制定字符串

start

运行外部程序的命令(立即返回)

assoc  (后接:①为空

②.txt等后缀名

③.txt=txtfile  )

① 显示所有文件扩展名关联类型

②显示.txt代表的文件类型项

③设置文件扩展名关联类型项

ftype  (后接:①为空

②txtfile等文件类型项

③txtfile=执行程序及参数 )

① 显示所有文件类型的关联执行程序及参数

②显示txtfile代表的文件类型项关联执行程序及参数

③设置txtfile文件类型的关联执行程序及参数

pushd 目录

将当前目录入栈保存,并切换至新目录

popd

将之前保存的目录出栈并切换至这个目录

call   (后接:①命令

②其他批处理文件

③:label 参数  )

① 执行指定命令

②执行另一个批处理(处理完才返回)

③执行本文件指定命令段,该段以:label开头,以goto:eof结尾

shift /n

更改批处理的可替换参数位置,从n开始

setlocal EnableDalayExpansion

启动变量延迟

Attrib

显示或更改文件属性

二、常用批处理符号

符号

说明

@

回显屏蔽

%

变量引导: %var%,引用变量; %0,批处理文件本身路径;%1~9,调用程序外部参数;%*,所有参数

(覆盖)输出

>> 

(添加)输出

从文件中读入命令

>&

将一个设备的输出写到另一个的输入  1:标准输入 2:标准输出 3:标准错误输出

<&

将一个设备的输入写到另一个的输出

|

命令管道符:command1|command2|command3……,将地1条的结果作为第二条的参数

^

转义字符,也可作为续行符号(因为每行末尾有一个看不见的回车换行符,最后用^会使其失效达到续行效果)

&

组合命令(互不影响)

&&

组合命令(前面执行失败,后面不执行)

||

组合命令(前面执行失败,后面才执行)

“”

字符串界定符

,

某些情况下相当于空格

()

(多行命令)会被当作一条命里执行

 

 

==

相等判断

exist

存在文件判断

defined

存在变量判断

EQU

(数字)相等判断

NEQ

(数字)不相等判断

LSS

(数字)小于判断

LEQ

(数字)小于等于判断

GTR

(数字)大于判断

GEQ

(数字)大于等于判断

 

同行命令优先级:

管道命令>重定向命令>组合命令

三、FOR语句

格式:FOR[参数]  %%var  IN  (一组文件) DO 命令 [命令参数]

(1)  for /d %%i in (C:\*) do echo %%i   

输出C盘下的所有目录

(2) for  /d  %%i  in  (C:\???)  do  echo  %%i  

输出C盘下的三个字符以内的目录

(3) for /r C:\ %%i in (*.exe)  do  echo %%i

输出C盘所有exe文件路径(如果未指定C:\,则搜索当前目录)

(4) for /l  %%i  in (1,1,5)  do  echo  %%i

  输出1,2,3,4,5。(1,1,5)=(start,step,end)

(5) FOR /F [“eol=c,skip=n,delims=xxx,tokens=x,y,m-n,usebackq”] %%i in

具体介绍请参见cmd帮助

FOR 命令中变量i修饰

变量修饰

说明

~i

如果i以”开头,则删除开头”和结尾”(如果结尾是”)

~fi

输出绝对路径

~di

只输出盘符

~pi

输出所在目录的路径

~ni

只输出文件名

~xi

只输出文件扩展名

~si

输出短文件名

~ai

输出文件属性

~ti

输出文件创建日期

~zi

输出文件大小

~$PATH:i

在环境变量PATH指定的目录里查找,有返回第一个文件名称,没有空字符串

四、变量

(一)系统变量

系统变量

返回值说明

通常位置(代表的值)

%AllUsersProfile%

系统ProgramData文件夹路径

C:\ProgramData

%AppData%

应用程序存储数据的位置

C:\Users\Administrator\AppData\Roaming

%CD%

当前目录

 

%CmdCmdLine%

当前批处理的完整命令行形式

 

%CmdExtVersion%

当前命令处理程序的扩展版本号

 

%ComputerName%

计算机名称

 

%ComSpec%

命令行解释执行程序cmd.exe的路径

C:\Windows\System32\cmd.exe

%Date%

当前日期

 

%ErrorLeval%

上一条命令的错误代码

0,成功;1,失败

%HomeDrive%

当前用户本地主目录的驱动器号

C:

%HomePath%

当前用户主目录

\User\administrator

%HomeShare%

当前用户共享主目录的网络路径

 

%LogonServer%

当前登录的域控制器的命称

 

%OS%

操作系统名称

 

%Path%

可执行文件的搜索路径

与编译器的include path 对应

%PathExt%

可执行文件的扩展名列表

 

%Processor_Architecture%

处理器体系结构

x86等

%Processor_Level%

处理器型号

 

%Processor_Revision%

处理器版本号

 

%Prompt%

当前命令提示符设置

 

%Random%

0到32767之间任意十进制数字

 

%SystemDrive%

系统驱动器

C:

%SystemRoot%

系统根目录

C:\Windows

%Temp%或%Tmp%

当前用户默认程序临时目录

 

%Time%

当前时间

 

%UserDomain%

当前用户域名称

 

%UserName%

当前用户名称

 

%UserProfile%

当前用户配置文件位置

 

%WinDir%

操作系统目录

C:\Windows

 

 

 

%n(n=1..9)

批处理第n个参数

 

%*

批处理所有参数

 

%0

批处理文件绝对路径

 

(二)自定义变量

(1)代码赋值:set var=tht

(2)键盘输入赋值:set /p var=请输入变量的值

五、Set命令

1.     set

显示当前环境变量的值

2.     set var=

清除var的值,使其成为未定义状态

3.     set var=tht

设置变量var,并赋值tht

4.     set /p var=请输入变量的值

设置变量var,等待键盘输入赋值

5.     set /a  var=运算表达式

设置变量var,其值为等号右边表达式的运算结果

六、常见表达式

1.     set  var=%str1:str2=str3%

将字符串str1中的str2部分用str3替换,结果赋值给var

2.     set var=%str:~start,length%

length为正,从字符串str的start位置开始,截取length个字符给var;length为负,从字符串str的start位置开始到倒数length位置之前的字符串赋给var

3.     set var=%str:~n%

n为正数,将字符串前n个字符赋给var;n为负数,将字符串后n个字符赋给var

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(批处理命令学习)