Поиск строки для символа конечной кавычки и обрезать его? - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь найти строку (введенную пользователем при запросе пути) для поиска конечной кавычки и удалить ее, если найдена.

Проблема: у меня есть файл bat, который запрашивает пользователячтобы ввести имя файла и путь (первое обычно делается с помощью перетаскивания.) Если пользователь вводит путь назначения, заключенный в кавычки, потому что он содержит пробелы, моя результирующая команда будет выглядеть следующим образом: compress.exe "c:\source path\"destination.zip"

Эта дополнительная цитата в середине должна идти.Я нашел множество способов поиска строки file , и нашел этот пост здесь, в StackOverflow, который, кажется, применяется, но, похоже, не работает в моей ситуации.

Я попробовал команду по указанному выше связанному пути, сказав, чтобы она искала \" вместо bcd, но код ожидает, что искомая строка передана ему (как переключатель)после выполнения, и когда я пытаюсь изменить команду для поиска srcpath вместо этого, bat перестает работать.Я также попробовал это:

if "!srcpath:~-1"=="\"" set srcpath=!srcpath:~0,-1!

Это приводит к: «Синтаксис команды неверен.»

Как я могу найти строку для конечной кавычки и обрезать ее?Кажется, что каждый метод, который я могу найти, не работает, когда искомый символ является кавычкой (косая черта: \").

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Будет ли это работать для вас?

SET /P "%SRCPATH=Enter the source path "
ECHO %SRCPATH%
ECHO %SRCPATH:"=%
0 голосов
/ 22 октября 2018

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

Прежде всего, в 90% случаев ... мы просто хотим, чтобы ВСЕ цитаты были удалены.Это было бы просто:

set srcpath=%srcpath:"=%

Затем вставьте кавычки в начало и конец вашей новой строки конкатенированного пути.

Но если вы ДЕЙСТВИТЕЛЬНО хотите только конечную.* * * * * * * * * * Вот мой глупый трюк с ударом.

1. Add a "? to the end of your string
2. Then delete ""? from that string
3. Then delete "? from that string

Wella!Никогда не терпит неудачу!Хитрость в том, что знак вопроса не является допустимым символом пути.

:: SAMPLE -- Just a trailing quote removed
set srcpath="c:\source path\"
set srcpath=%srcpath%"?
set srcpath=%srcpath:""?=%
set srcpath=%srcpath:"?=%
echo srcpath=%srcpath%

::You can use the SAME TRICK to remove a trailing backslash
...