且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

批处理常用命令及path路径添加

更新时间:2022-08-31 13:51:08

1、rem 与 echo、set、pause指令


  1. @echo off
  2. @echo on
  3. rem Test bat command
  4. set path1=%cd%
  5. set/p path2=
  6. @echo %path2%
  7. pause


批处理常用命令及path路径添加

图1-1

 

批处理常用命令及path路径添加

图1-2


  1. @ # 关闭单行回显,如果命令不加@,后重复显示一行,如图1-2
  2. @echo off / @echo on #用来开关echo;
  3. @rem 用于注释, #,所有rem 后面的语句都被执行;



2、添加环境变量到path,还需要决断该变量是否存在


  1. rem 添加路径到PATH中---------------------------------------------------------------------------------------------------
  2.     @set Path_=D:\Program Files
  3.     for,/f,"tokens=1,2,* delims= ",%%a,in,('reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v Path'),do,(
  4.         @set PathAll_=%%c
  5.     )
  6.     echo %PathAll_%
  7.     echo %PathAll_%|find /i "%Path_%" && set IsNull=true|| set IsNull=false
  8.     if not %IsNull%==true (
  9.        reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d "%PathAll_%;%Path_%" /
  10.     )
  11.     if not %IsNull%==false (echo "This path has exists")
  12. pause



    for,/f,"tokens=1,2,* delims=(Tab)(空格)",%%a,in,('reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v Path')

    这一句的作用是遍历注册表HKLM\SYSTEM\ControlSet001\Control\Session Manager\Environment中的Path变量的所有文本,并以Tab+空格做分隔符,取出第1、2和剩余部分,分别存放在a、b、c变量中。如图2-1:

批处理常用命令及path路径添加

图2-1

    因此%%a,代表Path,%%b代表REG_SZ,%%c代表 C:\Windows\System32;D:\Program Files。

    必须注意 delims=(Tab)(空格)" ,这里必须是先一个tab后再加空格,不然一定会报错的。

    另外注意,因为上面的对Path的分割用的是(Tab)(空格),for语句写成如下:

for,/f,"tokens=1,2,3 delims=(Tab)(空格)",%%a,in(略)

这里%%c取得的值将是 “C:\Windows\System32;D:\Program”,原因是Program Files中出现了一个空格。

神说,这里因为delims默认的分隔符是空格和tab键,这个地方注意一下!

 

3、让注册表生效的方法之一(某些情况可以,某些情况必须重启系统)


  1. rem 重启explorer进程让上面的注册表信息立马生效
  2. taskkill /im explorer.exe /f
  3. echo 正在启动explorer.exe
  4. start "" "c:\windows\explorer.exe"
  5. echo explorer.exe已开启
  6. ping -n 4 127.0.0.1>null