Экранирование специальных символов внутри bat-файла не будет действовать одинаковоC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Экранирование специальных символов внутри bat-файла не будет действовать одинаково

Сообщение Anonymous »

Я провожу весь день в поисках решения, но безуспешно. У меня странная ошибка с bat-файлом, созданным для распаковки файлов 7zip. Вот файл .bat:

Код: Выделить всё

@echo off
setlocal enabledelayedexpansion

set "filename=%~2"
set "password=%~1"
echo Password after removing quotes is: !password!
echo Path: !filename!
"C:\Program Files\7-zip\7z.exe" x -y -o"C:\Users\XXXXXX\Downloads" !filename! -p!password!
Насколько я знаю, вам нужно экранировать специальные символы внутри файлов .bat с помощью «^». У меня есть еще один скрипт C#, который делает это перед передачей строкового пароля в файл .bat. Он выглядит так:

Код: Выделить всё

static string EscapeSpecialCharacters(string input)
{
string pattern = @"[!&^]";
string escapeString = System.Text.RegulareExpressions.Regex.Replace(input, pattern, m=>m.Value == "&"?"^"+m.Value:"^^^"+m.Value);
return escapeString;
}

string escapedString = EscapeSpecialCharacters(originalString);
out_originalString = escapedString;
Моя проблема возникает, когда пароль содержит символ «^». Например, пароль ABCDoE4vySI^K?Mwt!w^ приведет к ABCDoE4vySI^^^^K?Mwt^^^!w^^^^, и пароль будет иметь эту форму внутри bat-файла ABCDoE4vySI^K?Mwt! ^ все хорошо. Для другой строки, выглядящей так szEcal^q#Lc@JkYjAWda, строка примет форму szEcal^^^^q#Lc@JkYjAWda, но когда она попадет в файл .bat, она будет иметь форму szEcal^^q#Lc@ JkYjAWda, что приведет к ошибке, и я не могу понять почему, это должно быть так: szEcal^q#Lc@JkYjAWda. Почему в одном и том же случае действуют двумя способами вместо того, чтобы соблюдать одно и то же условие и действовать одинаково.

Подробнее здесь: https://stackoverflow.com/questions/787 ... t-the-same
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Json Кодирование и экранирование специальных символов в sql с помощью php
    Anonymous » » в форуме Php
    0 Ответы
    70 Просмотры
    Последнее сообщение Anonymous
  • Кодирование Json и экранирование специальных символов в sql с помощью php [закрыто]
    Anonymous » » в форуме Php
    0 Ответы
    55 Просмотры
    Последнее сообщение Anonymous
  • Regex — экранирование специальных символов в Java
    Anonymous » » в форуме JAVA
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Функция подготовки RegEx (экранирование/замена специальных символов регулярного выражения)
    Anonymous » » в форуме Php
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Экранирование специальных символов в запросе Vespa YQL `matches`
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»