将bat代码移植到powershell

发布于 2025-01-03 04:42:39 字数 458 浏览 0 评论 0原文

将我的 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

Porting my bat scripts to PowerShell. Two problems: $info expands in strings like "$info"; when running commands from a file somewhere spoil the arguments (in interactive mode appears only the first problem. the console output "hg tip: invalid arguments").

Command:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陌路终见情 2025-01-10 04:42:39

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

更新:

好的,基本上你有 3 种方法。

  • 单引号 - 不计算表达式。但您需要转义单引号。
  • 双引号 - 计算表达式。所以,如果你想使用 $ 符号,你需要转义它。
  • Here-strings - 单引号或双引号(已评估/未评估)。字符串可以跨越多行。如果使用单引号方法,则不需要转义任何内容

第三种方法的示例:

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


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

Also, another way is to use single-quotes instead of double quotes you are using now.

update:

Ok, so basically you have 3 approaches.

  • Single-quotes - Expressions are not evaluated. But you need to escape the single-quote sign.
  • Double-quotes - Expressions are evaluated. So, if you want to use $ sign you need to escape it.
  • Here-strings - Either single, or double-quotes (evaluated/not evaluated). Strings can span multiple lines. You don't need to escape anything if you use single quote approach

Example for third approach:

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


_______________________________________________________________________________________________________________________________________________________________________________________________
[12:07:15 PM] ~> $str
'
`#'"<>\/@
少钕鈤記 2025-01-10 04:42:39

为了不将 $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

$ 是 powershell 关键字,因此 `$

to not evaluate $info as variable you must write it as `$info. Like:

 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

$ is powershell keyword therefore `$

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文