android - Windows Batch - 通过变量传递空间以在 ADB 命令中使用
问题描述
我目前正在使用批处理脚本使用 ADB 将多个文件传输到多个 android 设备。
我目前正在努力让参数忽略输出文件路径中的空格。
我目前正在调用包含代码的外部批处理文件“ adb+.bat ”:
@echo off
SET ARGUMENTS=%*
if "%ARGUMENTS%" == "" (
GOTO EOF
)
SET "ARGUMENTS=%ARGUMENTS:""="%"
SETLOCAL ENABLEDELAYEDEXPANSION
:: INSTALL ON ALL ATTACHED DEVICES ::
FOR /F "tokens=1,2 skip=1" %%A IN ('adb devices') DO (
SET IS_DEV=%%B
if "!IS_DEV!" == "device" (
SET SERIAL=%%A
echo "adb -s !SERIAL! %ARGUMENTS%"
call adb -s !SERIAL! %ARGUMENTS%
)
)
ENDLOCAL
:EOF
然后在主.bat中使用它来将参数传递给多个设备。
cmd.exe /c @for /f "delims=" %%l in ('dir /b ^"%~sdp0PDF\*.pdf^"') do adb+.bat push "%~sdp0PDF\%%l" "/sdcard/PDF/%%l"
文件名包含无法删除的空格。这导致以下错误:
Z:\Customer\Model\Build Deployment Software\Build BAT Files>adb+.bat push "Z:\CUSTOP~1\MODEL\BUILDD~1\BUILDB~1\PDF\Test PDF.pdf" "/sdcard/PDF/Test PDF.pdf"
PDF.pdf" "/sdcard/PDF/Test was unexpected at this time.
任何帮助将不胜感激。
解决方案
代替:
if "%ARGUMENTS%" == "" (
GOTO EOF
)
和:
if not defined ARGUMENTS (
GOTO EOF
)
您分配%*
给ARGUMENTS
.
%*
可以有双引号参数,因此当您使用双引号包围时,引号%ARGUMENTS%
的配对现在是不同的。
例如,如果您有"a b"
in的值并%ARGUMENTS%
添加引号,则会得到""a b""
,它被解释为
""
、a
和。b
""
当您尝试进行比较时,这会导致错误,因为您在if
和之间有多个值==
。
推荐阅读
- javascript - 无法获取“类名”的类型定义
- javascript - 验证输入文件
- visual-studio-code - VSCode 扩展 api – 使用 ThemeIcon 的文件类型/扩展图标
- oracle - XML getElementByTagName 路径
- python - 使用 Git 和 Github 仅下载文件的“差异”?
- sql - 带有 group by 的 select 语句中的相关子查询
- reactjs - React无法读取未定义的属性 - Array.map(
) - django - 如何在 Wagtail 网站上的图像中保留所有 EXIF 元数据?
- html - CSS 溢出-y:scroll; 适用于 chrome 但不适用于 html 标签的边缘
- python - 打印算术平均值,最小和最大年龄