我怎样才能使这些 CMD 命令自动化,以便它们可以 运行 在一起

How can I automate these CMD commands, so they can be ran together

我正在为 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

有什么方法可以将这些脚本一起配置为 运行?需要打很多字。

@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,然后简单地执行 whatever。使用编辑器,而不是文字处理器。

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

我不知道 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* TestAutomation 然后 instance 将被设置为值 TestAutomation 并在整个过程中被替换。

通过 运行 *thisbatch* 然后 instance 将被第一个 set 命令设置为 nothing (因为有没有第一个参数 %1 - 添加的波浪号表示 "and strip out any enclosing quotes") 所以它将是 "not defined" 并且 set/p 指令允许从键盘输入值。如果未输入任何内容,则程序会报告并终止。

除此之外,跟随弹跳球。例如,如果需要,%~2 会将第二个参数提供给另一个变量。变量应以字母开头并包含字母数字+一些特殊字符 _#@$ 和其他字符 - 只是不要太聪明。 %var% 访问值集。如果你想在路径名中使用空格,那么 "enclose the entire pathname in quotes"