Различия между одинарными и двойными кавычками в CMD - PullRequest
0 голосов
/ 28 июня 2018

У меня есть файл powershell, который заменяет IP-адрес в файле конфигурации. PowerShell принимает три параметра:

  1. имя файла ('C:\Program Files (x86)\app\app.conf')
  2. IP для замены
  3. новый IP

Поскольку мы зависим от использования пакетного файла для нашего сервиса для обработки задачи, я написал пакетный сценарий, который просто принимает три параметра и отправляет их в сценарий powershell.

Мы используем пакетный файл для вызова и анализа параметра: ($ используется только для представления переменных)

changeip.bat '$filepath' $oldip $newip

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

Как пробел в $filepath может быть понят двойными кавычками, а не одинарными?

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Короткий ответ: CMD не рассматривает одинарные кавычки как что-либо, кроме обычного символа. Это не пара / группа, как двойные кавычки.

Единственное место, где одинарная кавычка имеет какое-либо особое значение, находится в цикле FOR /F, где вы указываете команду для запуска и перебора выходных данных.

FOR /F %%d IN ('DIR /S /B C:\Windows') DO @ECHO File: %%d

FOR /F имеет возможность использовать обратные галочки вместо, если вам нужно передать одинарные кавычки вызываемому процессу, но это не имеет отношения к вашему вопросу.

0 голосов
/ 28 июня 2018

Я предполагаю, что вы вызываете командный файл и его переменные в powershell. Одиночная кавычка в значительной степени обозначает состояние «как есть» для текста между ними и не раскрывает его до переменной, где двойные кавычки расширяют переменную и заключают текст в одну строку.

EG.

$Hostname = "Computer Name"
Get-WmiObject Win32_computersystem -ComputerName '$Hostname'

Это попытается найти компьютер с именем $ Hostname

$Hostname = "Computer Name"
Get-WmiObject Win32_computersystem -ComputerName "$Hostname"

Будет выполнен поиск компьютера с именем «Имя компьютера»

Это плохой пример, поскольку вам не нужны цитаты ни для одного из них, но вы поняли идею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...