dos脚本:判断某个命令是否在path中,若不存在,则将命令添加到path中

当前环境:win10 64bit

 

@REM 进入到当前目录
cd /d %~dp0 

@ECHO OFF   
CLS

@REM 设置命令查找路径
set pythonPath=%cd%\tools\python
set adbPath=%cd%\tools\adb
set aaptPath=%cd%\tools\aapt
set adb_aapt_command=null

@REM 判断path路径是否包含 adb.exe
where adb |find /i "adb.exe" >nul && set hasAdb=true|| set hasAdb=false
@REM 若path路径包含 adb.exe,则设置
if not %hasAdb%==true (
wmic ENVIRONMENT where "name='path' and username='<system>'" set VariableValue="%adbPath%;%path%"
setx path "%path%"
echo "adb.exe has added to path"
)

@REM 判断path路径是否包含 aapt.exe
where aapt |find /i "aapt.exe" >nul && set hasAapt=true|| set hasAapt=false
@REM 若path路径包含 aapt.exe,则设置
if not %hasAapt%==true (
wmic ENVIRONMENT where "name='path' and username='<system>'" set VariableValue="%aaptPath%;%path%"
setx path "%path%"
echo "aapt.exe has added to path"
)

@REM  判断path路径是否包含 %pythonPath%;%adbPath%
@REM  echo %path%|find /i "%pythonPath%;%adbPath%" >nul && set IsNull=true|| set IsNull=false
@REM  @REM 如果没有设置过,则设置;如果已经设置,则不再设置
@REM  if not %IsNull%==true (
@REM  wmic ENVIRONMENT where "name='path' and username='<system>'" set VariableValue="%pythonPath%;%adbPath%;%path%"
@REM  setx path "%path%"
@REM  )


set APK_SAVE_DIR=priv-app
if not exist %APK_SAVE_DIR% mkdir %APK_SAVE_DIR%

@REM 遍历 priv-app 目录下面所有apk文件
set /a sum=0
@REM for %%x in (*.apk) do (
for /r %APK_SAVE_DIR% %%x in (*.apk) do (
echo "----------------------------------------->for below apk:" %%x
python privapp_permissions_for_window.py %%x
echo.
set /a sum=sum+1
)
echo Done %sum% apk.

pause  
echo.

 

 

代码片段说明:

@REM 判断path路径是否包含 adb.exe
where adb |find /i "adb.exe" >nul && set hasAdb=true|| set hasAdb=false
@REM 若path路径包含 adb.exe,则设置
if not %hasAdb%==true (
wmic ENVIRONMENT where "name='path' and username='<system>'" set VariableValue="%adbPath%;%path%"
setx path "%path%"
echo "adb.exe has added to path"
)

 

1、通过 where adb 命令,查找path是否存在adb命令,若存在,则设置变量   hasAdb=true,若不存在,则设置 hasAdb=false

2、若adb命令不存在path中,通过下面命令将adb命令添加到path中

wmic ENVIRONMENT where "name='path' and username='<system>'" set VariableValue="%adbPath%;%path%"

setx path "%path%"

 

上面这段代码需要通过 管理员身份 运行脚本,然后才能有权限添加到path中

 

 

 

目前有个待解的问题:

上面代码有两个判断语句,依次判断adb、aapt命令,调用了2次下面语句

wmic ENVIRONMENT where "name='path' and username='<system>'" set VariableValue="%adbPath%;%path%"
setx path "%path%"

但是,通过 管理员身份 运行脚本时,当时运行1次脚本时,只能让1个命令添加成功,另外一个命令没有添加到path; 若想将命令都添加成功,则需要通过 管理员身份 运行2次脚本,不知道是什么原因,暂时没有解决

 

最终的解决方法,可以看这里,完美解决    见 get_privapp_permissions.bat 文件

posted @ 2022-03-21 14:47  行走的思想  阅读(227)  评论(0编辑  收藏  举报