如何自动执行这些CMD命令,以便它们可以一起运行

时间:2015-02-14 10:14:05

标签: command-line cmd terminal

我正在为Android应用程序编写自动化ui测试,并且在测试代码中的每次更改之后,我必须执行以下操作:

e:
cd adt/sdk/tools/android create uitest-project -n TestAutomation -t 16 -p c:/Users/John/workspace/TestAutomation
c:
cd ../..
cd: Users/John/workspace/TestAutomation
ant build
adb push c:/Users/John/workspace/TestAutomation/bin/TestAutomation.jar /data/local/tmp/
adb shell uiautomator runtest TestAutomation.jar -c com.uia.example.my.TestApp

有没有办法可以将这些脚本配置为自己一起运行?它很多打字。

1 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL
e:
cd \adt\sdk\tools\android create uitest-project -n TestAutomation -t 16 -p c:\Users\John\workspace\TestAutomation
c:
CD \Users\John\workspace\TestAutomation
CALL ant build
CALL adb push c:\Users\John\workspace\TestAutomation\bin\TestAutomation.jar \data\local\tmp\
CALL adb shell uiautomator runtest TestAutomation.jar -c com.uia.example.my.TestApp
GOTO :EOF

您应该能够将此文件简单地保存为 whatever.bat ,然后只需执行任何。使用编辑器,而不是文字处理器。

请注意,路径分隔符为\,而不是/

我不知道adb是什么 - call应该执行它,无论它是批处理还是可执行。


@ECHO OFF
SETLOCAL
set "instance=%~1"
if not defined instance set /p "instance=What instance ? "
if not defined instance echo no instance set&goto :eof
e:
cd \adt\sdk\tools\android create uitest-project -n %instance% -t 16 -p c:\Users\John\workspace\%instance%
c:
CD \Users\John\workspace\%instance%
CALL ant build
CALL adb push c:\Users\John\workspace\%instance%\bin\%instance%.jar \data\local\tmp\
CALL adb shell uiautomator runtest %instance%.jar -c com.uia.example.my.TestApp
GOTO :EOF

在此示例中,TestAutomation的每次提及都已被%instance%替换。

通过运行*thisbatch* TestAutomationinstance将设置为值TestAutomation并在整个过程中替换。

通过运行*thisbatch*instance将被第一个set命令设置为 nothing (因为没有第一个参数,%1 - 添加的波浪号意味着"并删除任何封闭的引号")因此它将被定义为"未定义"并且set/p指令允许从键盘输入值。如果未输入任何内容,则程序将报告并终止。

除此之外,按照弹跳球。如果需要,%~2将为其变量提供第二个参数。变量应该以字母开头并包含字母数字+一些特殊字符_#@ $和其他 - 只是不要太聪明。 %var%访问值集。如果您想在路径名中使用空格,那么"将整个路径名用引号括起来"