Пакет Windows - передача пространства над переменной для использования в команде ADB - PullRequest
0 голосов
/ 20 сентября 2018

В настоящее время я использую пакетный скрипт для передачи нескольких файлов на несколько устройств Android с использованием ADB.

В настоящее время я пытаюсь получить аргумент для игнорирования пробелов в выходном пути файла.

В настоящее время я вызываю внешний пакетный файл " 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.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Я принял другой подход к проблеме.Вместо того, чтобы вызывать внешний .bat, я использовал скрипт непосредственно в своем основном .bat.

SETLOCAL ENABLEDELAYEDEXPANSION 
FOR /F "tokens=1,2 skip=1" %%a IN ('adb devices') DO (
    SET IS_DEV=%%b
    if "!IS_DEV!" == "device" (
        SET SERIAL=%%a
            call adb -s !SERIAL! push -p "%~sdp0PDF" "/sdcard/PDF"
    )
)
ENDLOCAL
0 голосов
/ 21 сентября 2018

Заменить:

if "%ARGUMENTS%" == "" (
    GOTO EOF
)

На:

if not defined ARGUMENTS (
    GOTO EOF
)

Вы присваиваете %* ARGUMENTS.

%* может иметь двойные кавычкитаким образом, когда вы используете двойные кавычки для окружения %ARGUMENTS%, то объединение кавычек теперь будет другим.

Например, если у вас есть значение "a b" в %ARGUMENTS%, и вы добавляете кавычки, выget ""a b"", что интерпретируется как "", a, b и "".

. Это приводит к ошибке при попытке выполнить сравнение, поскольку у вас есть несколько значений междуif и ==.

...