Ошибка команды PowerShell при вводе в файл cmd

#powershell

#powershell

Вопрос:

Я пытаюсь поместить следующую команду PowerShell в файл cmd для выполнения (она прекрасно работает при вызове из командной строки PS):

 dir stand/*.jpg | %{$x=0} {Rename-Item $_ -NewName "Base$x.jpg"; $x   }
  

Я получаю следующую ошибку:

‘{$ x’ не распознается как внутренняя или внешняя команда, работоспособная программа или пакетный файл.

Я попытался поставить double $$ вместо single $ и double %% вместо single % , но это все равно не удается.

Я пропускаю какой-то экранирование?

Ответ №1:

Вы не можете использовать команды PowerShell внутри *.cmd файла, а не напрямую…

Поместите команду в *.ps1 файл и вызовите ее с помощью powershell, например

 powershell -file "c:usersmemyscript.ps1"
  

Конечно, вы можете вызвать powershell непосредственно из своего cmd-файла и передать команду в качестве аргумента, но это всегда сложно, потому что вам нужно экранировать материал и т. Д. Иногда вы можете легко обойти это, используя одинарные кавычки внутри вашей команды:

 powershell -Command "$x=0; dir stand/*.jpg | foreach {Rename-Item $_.FullName ('Base'   $x     '.jpg')}"