×

[WINDOWS]bat脚本中读取命令的返回值

hqy hqy 发表于2022-08-02 11:56:41 浏览4790 评论0

抢沙发发表评论

bat脚本中读取一个命令运行的返回值,并且执行相关的操作。使用for /f语法即可。

方法:

以下bat脚本在任务管理器中查找名称为python2.exe,且进程启动参数中包含了aaa字符的进程:


for /f "tokens=2" %%i in ('tasklist^|findstr /i python2.exe')

do ( 

    for /f "delims=|" %%j in ('wmic process where "ProcessId=%%i" get CommandLine^|findstr /i aaa')

    do ( 

        echo "terminating:%%j" taskkill /f /pid %%i

    )

)

————————————————



现在大多数的办公设备都是WIndows,只不过企业中基本上全都在使用win10系统!


有时为了工作的效率提升,可以尝试将那些复杂无用的操作写成bat脚本,让其自己执行!


bat中可以糅合各种指令,包括:python,java,shell,adb等等,包括你知道的和不知道的!


最近在工作中总是有一个繁琐的操作很是让人头疼:


①将安装包copy至手机指定目录


②安装APK


于是乎,我想将这个操作写入bat中,以后执行bat脚本就可以完成上面的步骤!


但是今天想说的是在码代码过程中遇到的一个问题:


bat中执行了adb shell命令来删除手机上的文件夹和创建文件夹,我如何知道删除成功与否以及创建成功与否呢?


这就需要了解“bat中如何获取命令执行后的结果”!


1.案例:在手机中创建指定文件夹

rem 判断InstallerPackage文件夹是否存在

for /f "tokens=*" %%i in ('adb shell mkdir %targetPath%') do (

set vars=%%i

)

if defined vars (

rem adb shell命令执行的结果不为空:执行失败

rem InstallerPackage文件夹已经存在

goto :empty

) else (

rem adb shell命令执行成功

rem 创建InstallerPackage文件夹并推送

goto :push

)

通过上面的for可以获取adb命令的执行结果,但上面的adb命令执行成功后其返回值是空


进而还需要通过defined来对执行结果进行判空!


2.执行python脚本并获取执行结果


**test.py


# -*- coding: utf-8 -*-

__author__ = 'whw'

 

 

def showlog():

    print(111111)

 

if __name__ == '__main__':

    showlog()

**test.bat


@echo off

for /f "tokens=*" %%i in ('python test.py') do (

set vars=%%i

)

echo python脚本执行结果:%vars%

 

pause

bat脚本运行结果如下:


057d8771525211bc62f1bc2cfe36a7e2_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Zsb2F0RHJlYW1lZA==,size_16,color_FFFFFF,t_70.png

————————————————



打赏

本文链接:https://www.kinber.cn/post/2574.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客