adb shell "LD_LIBRARY_PATH='$DEVICE_TEST_PATH/libs' $DEVICE_TEST_PATH/$BIN_NAME $DEVICE_TEST_PATH/jpgs $RUSULT $DEVICE_TEST_PATH/model.exf"转成.bat
时间: 2023-08-03 08:02:32 浏览: 170
将该命令转换为 .bat 文件可以按照下面的步骤进行:
1. 打开记事本或其他文本编辑器。
2. 在编辑器中输入以下内容:
```
adb shell "LD_LIBRARY_PATH='%DEVICE_TEST_PATH%/libs' %DEVICE_TEST_PATH%/%BIN_NAME% %DEVICE_TEST_PATH%/jpgs %RUSULT% %DEVICE_TEST_PATH%/model.exf"
```
3. 将 %DEVICE_TEST_PATH% 和 %BIN_NAME% 替换为实际的路径和文件名。
4. 将文件保存为 .bat 文件,比如 test.bat。
现在,你可以在 Windows 中运行 test.bat 文件来执行该命令。请注意,这些命令可能需要在 Windows 中安装 adb 工具和相关依赖库才能正常运行。
相关问题
#!/bin/bash # Assets TEST_IMG=demo.png SDK_ROOT=$PWD TEST_ROOT=$PWD BIN_NAME=test_demo DEVICE_TEST_PATH=/data/local/tmp/ts_ai_sdk_test MODEL_PATH=/sdcard/models RUSULT=/data/local/tmp/ts_ai_sdk_test/results/ RUNTIME=DSP adb root # Push test assets adb shell rm -rf $DEVICE_TEST_PATH # adb shell rm -rf $MODEL_PATH adb shell mkdir -p $DEVICE_TEST_PATH/jpgs adb shell mkdir -p $DEVICE_TEST_PATH/results/post_result adb shell mkdir -p $DEVICE_TEST_PATH/results/img_result #adb shell mkdir -p $MODEL_PATH adb push images/* $DEVICE_TEST_PATH/jpgs # Push SNPE libraries adb push ${SDK_ROOT}/libs/ $DEVICE_TEST_PATH adb push ${SDK_ROOT}/models/model.exf $DEVICE_TEST_PATH/ # Push executable adb push build/$BIN_NAME $DEVICE_TEST_PATH # Test adb shell "chmod +x $DEVICE_TEST_PATH/$BIN_NAME" echo "Running on Android device ..." echo "LD_LIBRARY_PATH='$DEVICE_TEST_PATH/libs' $DEVICE_TEST_PATH/$BIN_NAME $DEVICE_TEST_PATH/jpgs $RUSULT $DEVICE_TEST_PATH/model.exf" echo "Done." adb shell "LD_LIBRARY_PATH='$DEVICE_TEST_PATH/libs' $DEVICE_TEST_PATH/$BIN_NAME $DEVICE_TEST_PATH/jpgs $RUSULT $DEVICE_TEST_PATH/model.exf" # Pull result adb pull $DEVICE_TEST_PATH/results/ . sleep 1改为bat脚本
将该脚本转换为 Windows 的 batch 脚本,需要进行以下修改:
1. 更改第一行为 `@echo off`,表示关闭命令回显。
2. 将变量的赋值方式从 `$变量名=值` 改为 `set 变量名=值`。
3. 将 `adb` 命令行中的路径分隔符 `/` 改为 Windows 下的路径分隔符 `\`。
4. 在执行命令行时需要使用 `call` 命令。
修改后的 batch 脚本如下:
```
@echo off
REM Assets
set TEST_IMG=demo.png
set SDK_ROOT=%cd%
set TEST_ROOT=%cd%
set BIN_NAME=test_demo
set DEVICE_TEST_PATH=/data/local/tmp/ts_ai_sdk_test
set MODEL_PATH=/sdcard/models
set RESULT=/data/local/tmp/ts_ai_sdk_test/results/
set RUNTIME=DSP
REM Push test assets
adb root
adb shell rm -rf %DEVICE_TEST_PATH%
adb shell mkdir -p %DEVICE_TEST_PATH%/jpgs
adb shell mkdir -p %DEVICE_TEST_PATH%/results/post_result
adb shell mkdir -p %DEVICE_TEST_PATH%/results/img_result
adb push images\* %DEVICE_TEST_PATH%/jpgs
REM Push SNPE libraries
adb push %SDK_ROOT%\libs\ %DEVICE_TEST_PATH%
adb push %SDK_ROOT%\models\model.exf %DEVICE_TEST_PATH%\
REM Push executable
adb push build\%BIN_NAME% %DEVICE_TEST_PATH%\
REM Test
adb shell "chmod +x %DEVICE_TEST_PATH%\%BIN_NAME%"
echo Running on Android device ...
echo "LD_LIBRARY_PATH='%DEVICE_TEST_PATH%\libs' %DEVICE_TEST_PATH%\%BIN_NAME% %DEVICE_TEST_PATH%/jpgs %RESULT% %DEVICE_TEST_PATH%/model.exf"
echo Done.
call adb shell "LD_LIBRARY_PATH='%DEVICE_TEST_PATH%\libs' %DEVICE_TEST_PATH%\%BIN_NAME% %DEVICE_TEST_PATH%/jpgs %RESULT% %DEVICE_TEST_PATH%\model.exf"
REM Pull result
adb pull %DEVICE_TEST_PATH%/results/ .
timeout /t 1
```
adb shell cd /path/to/device/directory && .\app_manager 这个指令错了吧,&& 后面相当在本地执行
确实,在 `adb shell` 中使用 `&&` 操作符可能会导致混淆,因为 `&&` 在这里代表的是设备端的操作符,而不是本地操作。当你在 `adb shell` 后跟 `cd` 和 `.\app_manager` 时,`cd` 用于改变设备上的工作目录,而 `.\app_manager` 则试图在当前目录下执行 app_manager 脚本。但是,`.\` 在设备的bash或其他shell环境中并不总是有效,因为它可能期望的是 `./app_manager` 来表示相对于当前目录的相对路径。
正确的做法应该是:
1. 先确保 app_manager 已经上传到设备的指定目录:`adb push app_manager /path/to/device/directory`
2. 确保设备上对 app_manager 的权限允许执行:`adb shell chmod +x /path/to/device/directory/app_manager`(如果需要)
3. 使用 `adb shell` 直接执行文件:`adb shell /path/to/device/directory/app_manager`
如果你想通过一条单行命令一次性完成,你可以组合两个步骤,如下所示:
```sh
adb shell 'cd /path/to/device/directory && chmod +x app_manager && .\app_manager'
```
这条命令首先更改目录,然后添加执行权限,最后执行 app_manager。
阅读全文