gpt4 book ai didi

powershell - 将 DOS 批处理文件转换为 PowerShell

转载 作者:行者123 更新时间:2023-12-03 17:14:32 27 4
gpt4 key购买 nike

我正在尝试将 .bat 文件转换为 PowerShell 并且在理解一些代码片段正在做什么时遇到问题:

set MY_VARIABLE = "some\path\here"  
"!MY_VARIABLE:\=/!"

上面的第 2 行在做什么?特别是,我不明白 :\=/正在做什么,因为我已经看到代码中的 else 变量被引用,如 !MY_VARIABLE!。

另一个混淆点是下面的代码。
set SOME_VARIABLE=!SOME_ARGUMENTS:\=\\!  
set SOME_VARIABLE=!SOME_ARGUMENTS:"=\"!

另外,你能告诉我上面第 3 行和第 4 行发生了什么吗?

以下变量也将转换为 PowerShell?
set TN0=%~n0  
set TDP0=%~dp0
set STAR=%*

非常感谢您对此的任何帮助。谢谢。

最佳答案

!var:find=replace!是延迟扩展变量的字符串替换。

http://www.robvanderwoude.com/ntset.php#StrSubst

当您使用 !而不是 %对于变量,您希望 DOS 在执行时进行变量替换(这可能是您认为它对 % 所做的,但事实并非如此)。与 % ,在解析命令时(在运行之前)替换变量 - 因此,如果变量作为命令的一部分更改,则不会看到它。我想有些人会改用 !一直以来,因为它给出了“正常”的行为。

您可以在此处阅读有关延迟扩展的更多信息

http://www.robvanderwoude.com/ntset.php#DelayedExpansion

关于powershell - 将 DOS 批处理文件转换为 PowerShell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8344103/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com