将bat代码移植到powershell

将bat代码移植到powershell,shell,powershell,mercurial,batch-file,Shell,Powershell,Mercurial,Batch File,将我的bat脚本移植到PowerShell。两个问题:$info在字符串中展开,如“$info”;当从某个文件运行命令时,会破坏参数(在交互模式下,仅出现第一个问题。控制台输出“hg提示:无效参数”) 命令: hg tip --template "<?php\r\n// ќв®  ўв®¬ вЁзҐбЄЁ бЈҐ­ҐаЁа®ў ­­л© д ©« б Ё­д®а¬ жЁҐ© ® ⥪г饬 ЎЁ«¤Ґ ¬®¤г«п\r\n$info = array(\r\n'rev' => '{

将我的bat脚本移植到PowerShell。两个问题:
$info
在字符串中展开,如
“$info”
;当从某个文件运行命令时,会破坏参数(在交互模式下,仅出现第一个问题。控制台输出“hg提示:无效参数”)

命令:

hg tip --template "<?php\r\n// ќв®  ўв®¬ вЁзҐбЄЁ бЈҐ­ҐаЁа®ў ­­л© д ©« б Ё­д®а¬ жЁҐ© ® ⥪г饬 ЎЁ«¤Ґ ¬®¤г«п\r\n$info = array(\r\n'rev' => '{rev}',\r\n'date' => '{date|isodate}',\r\n'changeset' => '{node}',\r\n);" > modules/video/version.php

hg-tip--template“若要不将
$info
作为变量进行计算,必须将其作为
`$info
编写。例如:

 hg tip --template "<?php\r\n// ќв®  ўв®¬ вЁзҐбЄЁ бЈҐ®ў © д ©« б Ё®а¬ жЁҐ© ® ⥪г饬 ЎЁ«¤Ґ ¬®¤г«п\r\n`$info = array(\r\n'rev' => '{rev}',\r\n'date' => '{date|isodate}',\r\n'changeset' => '{node}',\r\n);" > modules/video/version.php

hg-tip--template“若要不将
$info
作为变量计算,必须将其作为
`$info
编写。比如:

 hg tip --template "<?php\r\n// ќв®  ўв®¬ вЁзҐбЄЁ бЈҐ®ў © д ©« б Ё®а¬ жЁҐ© ® ⥪г饬 ЎЁ«¤Ґ ¬®¤г«п\r\n`$info = array(\r\n'rev' => '{rev}',\r\n'date' => '{date|isodate}',\r\n'changeset' => '{node}',\r\n);" > modules/video/version.php

hg-tip--template”另外,另一种方法是使用单引号,而不是现在使用的双引号

更新:

基本上你有三种方法

  • 单引号-不计算表达式。但需要转义单引号符号
  • 双引号-表达式是经过计算的。所以,如果你想使用$sign,你需要转义它
  • 这里是字符串-单引号或双引号(已计算/未计算)。字符串可以跨多行。如果使用单引号方法,则无需转义任何内容
第三种方法的例子:

[12:06:58 PM] ~> $str = @'
'$'`#'"<>\/@
'@ 


_______________________________________________________________________________________________________________________________________________________________________________________________
[12:07:15 PM] ~> $str
'$'`#'"<>\/@
[12:06:58 PM]~>$str=@'
'$'`#'"\/@
'@ 
_______________________________________________________________________________________________________________________________________________________________________________________________
[12:07:15 PM]~>$str
'$'`#'"\/@

另外,另一种方法是使用单引号,而不是现在使用的双引号

更新:

基本上你有三种方法

  • 单引号-不计算表达式。但需要转义单引号符号
  • 双引号-表达式是经过计算的。所以,如果你想使用$sign,你需要转义它
  • 这里是字符串-单引号或双引号(已计算/未计算)。字符串可以跨多行。如果使用单引号方法,则无需转义任何内容
第三种方法的例子:

[12:06:58 PM] ~> $str = @'
'$'`#'"<>\/@
'@ 


_______________________________________________________________________________________________________________________________________________________________________________________________
[12:07:15 PM] ~> $str
'$'`#'"<>\/@
[12:06:58 PM]~>$str=@'
'$'`#'"\/@
'@ 
_______________________________________________________________________________________________________________________________________________________________________________________________
[12:07:15 PM]~>$str
'$'`#'"\/@

你能修好我的代码吗?我已经试了很多次了,最后终于成功了​​这是bat文件中的另一行。你能修改我的代码吗?我已经试了很多次了,最终还是成功了​​这是bat文件中的一行。最后,一切都决定了:1)答案:2)问题是由于特定的文本编码(DOS编码中的西里尔字母)这里是:
ќўжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж1078.这里是: