Путь передачи с пробелами как параметр к bat-файлу

Это недопустимая строка JSON, потому что вы не экранируете двойные кавычки на уровне JSON, только на уровне языка. После удаления первого уровня управляющих кодов ваша строка JSON будет выглядеть следующим образом:

"I said, "Hello""

Двойная кавычка перед «Hello» заканчивает строку, поэтому сообщение об ошибке говорит:

Неожиданный токен H в JSON в позиции 10

Строка JSON, которую вы хотите:

"I said, \"Hello\""

Чтобы создать ее как строковый литерал в Elm, вам нужно " double escape "двойные кавычки, что на практике означает просто добавление экранированной обратной косой черты перед каждой из экранированных двойных кавычек:

Decode.decodeString Decode.string "\"I said, \\\"Hello\\\"\""
58
задан Bill the Lizard 29 January 2013 в 13:48
поделиться

4 ответа

Интересный. Я люблю собирать кавычки об обработке кавычек в cmd/command.

Ваши конкретные сценарии фиксируется при помощи %1 вместо "%1"!!!

Путем включения 'эха' (или избавления от эха прочь), Вы, возможно, легко узнали это.

21
ответ дан vrdhn 24 November 2019 в 18:43
поделиться

Если у Вас есть путь с пробелами, необходимо окружить его кавычками (").

Не уверенный, если это точно, что Вы спрашиваете хотя?

5
ответ дан 24 November 2019 в 18:43
поделиться
@echo off
setlocal enableextensions enabledelayedexpansion

if %1=="" (     
        rem Set default path
        set PWA_PATH="C:\Program Files\PWA"
        rem
        echo You have not specified your PWA url.
        echo Default will be assumed: C:\Program Files\PWA.     
        choice /C:YN /M:"Do you wish to continue [Y] or cancel the script [N]?"
                IF ERRORLEVEL ==2 GOTO CANCEL
                IF ERRORLEVEL ==1 GOTO READ_WSS_SERVER_EXTENSIONS_PATH
        GOTO END
    ) else (
        set PWA_PATH=%1
        @echo !PWA_PATH! vs. %1
        goto end
    )
:READ_WSS_SERVER_EXTENSIONS_PATH
echo ok
goto end
:CANCEL
echo cancelled
:end
echo. final %PWA_PATH% vs. %1

Как [1 110] упоминания VardhanDotNet, %1 достаточно.

"%1%" добавил бы кавычки вокруг кавычек: ""c:\Program Files\xxx"", что означает:

  • 'пустая строка' (""),
  • сопровождаемый 'c:\Program',
  • сопровождаемый "неожиданный здесь" 'Files\xxx',
  • сопровождаемый пустой строкой ("")

Примечание однако, что, если необходимо использовать PWA_PATH в Вашем IF пункт, необходимо относиться если как !PWA_PATH! (следовательно enabledelayedexpansion как начало сценария)

2
ответ дан Community 24 November 2019 в 18:43
поделиться

Я думаю, что проблема OP заключалась в том, что он хочет сделать ОБА из следующего:

  • Передать параметр, который может содержать пробелы.
  • Проверить, является ли параметр Отсутствует

Как упоминалось в нескольких плакатах, чтобы передать параметр, содержащий пробелы, вы должны заключить фактическое значение параметра в двойные кавычки.

Чтобы проверить, отсутствует ли параметр, я всегда узнал следующий метод:

if "%1" == ""

Однако , если фактический параметр заключен в кавычки (как и должно быть, если значение содержит пробелы), это становится

if ""actual parameter value"" == ""

, что вызывает «непредвиденную» ошибку. Если вы вместо этого используете

if %1 == ""

, ошибка больше не возникает для значений в кавычках. Но в этом случае тест больше не работает , когда значение отсутствует - оно становится

if  == ""

. Чтобы исправить это, используйте любые другие символы (кроме тех, которые имеют особое значение для DOS) вместо кавычек в тесте:

if [%1] == []
if .%1. == ..
if abc%1xyz == abcxyz
14
ответ дан 24 November 2019 в 18:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: