起因:
公司同时存在python2和python3的项目,经常需要切换运行,为了快速处理执行,写一个文件右键执行的python2的脚本,然后系统环境变量默认为python3
举例:
D:\softwear\dev\APKDB\python2\main.bat,其内容为
@echo off
echo %~dp1
echo %~nx1
cd /d %~dp1
C:\Python27\python.exe %~nx1
pause
解释:
%0表示main.bat本身,%1表示第1个参数,%2表示第2个参数,依此类推
在这里
cd /d %~dp1的意思就是cd /d 第一个入参的路径
~dp是变量扩充
d:既是扩充到分区号 d:
p:就是扩充到路径 \qq
dp:就是扩充到分区号路径 d:\qq
扩充变量语法详解:
:: ~I - 删除任何引号("),扩充 %I
:: %~fI - 将 %I 扩充到一个完全合格的路径名
:: %~dI - 仅将 %I 扩充到一个驱动器号
:: %~pI - 仅将 %I 扩充到一个路径
:: %~nI - 仅将 %I 扩充到一个文件名
:: %~xI - 仅将 %I 扩充到一个文件扩展名
:: %~sI - 扩充的路径只含有短名
:: %~aI - 将 %I 扩充到文件的文件属性
:: %~tI - 将 %I 扩充到文件的日期/时间
:: %~zI - 将 %I 扩充到文件的大小
:: %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩充到空字符串
:: 可以组合修饰符来得到多重结果:
:: %~dpI - 仅将 %I 扩充到一个驱动器号和路径
:: %~nxI - 仅将 %I 扩充到一个文件名和扩展名
:: %~fsI - 仅将 %I 扩充到一个带有短名的完整路径名
:: %~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充
:: 到找到的第一个驱动器号和路径。
:: %~ftzaI - 将 %I 扩充到类似输出线路的 DIR
Android开发常用工具
1.生成keystore
@echo off
set desk=%userprofile%\desktop
set startdate=%date:~0,10% %time:~0,8%
@echo %startdate%
set /p alias=请输入alias:
set /p keypass=请输入keypass:
set /p storepass=请输入storepass:
::set /p cn=请输入名字与姓氏:
set /p ou=请输入单位名称:
::set /p o=请输入组织名称:
::set /p l=请输入城市或区域名称:
::set /p st=请输入省份名称:
::set /p c=请输入国家名称:
set keystore=%desk%\%alias%.keystore
keytool -genkeypair -alias %alias% -keyalg RSA -keysize 4096 -sigalg SHA256withRSA -dname "ou=%ou%" -keypass %keypass% -startdate "%startdate%" -validity 9125 -storepass %storepass% -keystore %keystore%
@echo 输出路径:%keystore%
pause;
::选项细分:
::-alias– 封装在密钥库中的条目的别名。选择的值应该增强密钥库条目的可读性,尤其是当密钥库包含多个条目时。
::-keyalg– 用于生成密钥对的算法。支持的算法包括 RSA、DSA 和 EC。
::-keysize– 密钥大小(以位为单位)。美国国家标准与技术研究院 ( NIST)建议密钥大小至少为 3072 位,如果密钥将在?? 2030 年之后使用,但许多用户已采用 4096。
::-sigalg- 该值通常来自私钥的算法,但为了清楚起见,可以指定。支持的签名算法包括 SHA1withDSA、SHA256withRSA 和 SHA256withECDSA。
::-dname – 这是专有名称,也称为证书的主题。
:: CN(Common Name名字与姓氏)
:: OU(Organization Unit组织单位名称)
:: O(Organization组织名称)
:: L(Locality城市或区域名称)
:: ST(State州或省份名称)
:: C(Country国家名称)
::-keypass– 用于加密和解密私钥的密码。这应该与-storepass. 它可以不同,但??如果密码不同,您可能会在应用程序读取密钥库和密钥时遇到麻烦。该值不必指定,如果没有,系统会提示您输入密码。建议这样做,这样密码就不会出现在您的历史记录中。
::-startdate– 生成的证书的 not_before 值。可以分两部分指定,日期和时间。如果两个部分都指定,则必须用引号括起来。
::-validity– 以天为单位的有效期。该值将根据 not_before 值计算 not_after 值。
::-storetype– 推荐的密钥库类型包括 PKCS12 和 JKS。
::-storepass– 用于加密和解密密钥库的密码。这应该与-keypass存储在密钥库中的 on 密钥相同。该值不必指定,如果没有,系统会提示您输入密码。建议这样做,这样密码就不会出现在您的历史记录中。
::-keystore– 要生成的密钥库的文件名。
::查看秘钥库条目
::keytool -list -v -keystore C:\Android\keystore\wedobest.keystore -alias wedobest
::打印证书内容
::keytool -printcert -v -file C:\Android\keystore\wedobest.keystore
2. 安装APK
@echo off
::读取输入拖入APK的路径
SET input_path=%1
echo 开始安装:%input_path%
::开始安装
adb install -r -t %input_path%
pause
::-l 锁定该应用程序
::-r 替换已存在的应用程序,也就是说强制安装
::-t 允许测试包
::-s 把应用程序安装到sd卡上
::-d 允许进行将见状,也就是安装的比手机上带的版本低
::-g 为应用程序授予所有运行时的权限
3. aab转apks
@echo off
::设置bundletools的路径
SET bundle_tools_path="E:\\android_build\bundletool.jar"
::SET bundle_tools_path=bundletool.jar
::aab路径
SET input_path=%1
echo 原始路径:%input_path%
SET out_put1=%input_path%
SET out_put2=%out_put1:aab"=apks%
SET out_put3=%out_put2:"=%
::echo 输出路径2:%out_put2%
::echo 输出路径3:%out_put3%
::开始执行
java -jar %bundle_tools_path% build-apks --bundle=%input_path% --output=%out_put3%
echo 执行完成,输出路径:%out_put3%
pause
4. 安装apks
@echo off
::设置bundletools的路径
SET bundle_tools_path="E:SVN\pdragon\android_build\AndroidBuildTools\extra\gradle_build_setting\bundletool.jar"
::SET bundle_tools_path=bundletool.jar
::读取输入拖入APKS的路径
SET input_path=%1
echo 开始安装:%input_path%
::开始安装
java -jar %bundle_tools_path% install-apks --apks=%input_path%
java -jar %bundle_tools_path% install-apks --apks=%input_path%
pause
exit