1、rem 与 echo、set、pause指令
-
@echo off
-
@echo on
-
rem Test bat command
-
set path1=%cd%
-
set/p path2=
-
@echo %path2%
-
pause
图1-1
图1-2
-
@ # 关闭单行回显,如果命令不加@,后重复显示一行,如图1-2
-
@echo off / @echo on #用来开关echo;
-
@rem 用于注释, #,所有rem 后面的语句都被执行;
2、添加环境变量到path,还需要决断该变量是否存在
-
rem 添加路径到PATH中---------------------------------------------------------------------------------------------------
-
@set Path_=D:\Program Files
-
for,/f,"tokens=1,2,* delims= ",%%a,in,('reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v Path'),do,(
-
@set PathAll_=%%c
-
)
-
echo %PathAll_%
-
echo %PathAll_%|find /i "%Path_%" && set IsNull=true|| set IsNull=false
-
if not %IsNull%==true (
-
reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d "%PathAll_%;%Path_%" /f
-
)
-
if not %IsNull%==false (echo "This path has exists")
-
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:
图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、让注册表生效的方法之一(某些情况可以,某些情况必须重启系统)
-
rem 重启explorer进程让上面的注册表信息立马生效
-
taskkill /im explorer.exe /f
-
echo 正在启动explorer.exe
-
start "" "c:\windows\explorer.exe"
-
echo explorer.exe已开启
-
ping -n 4 127.0.0.1>null
阅读(618) | 评论(0) | 转发(0) |