将DOS批处理文件转换为PowerShell

use*_*715 5 powershell batch-file

我正在尝试将.bat文件转换为PowerShell,并且无法理解代码片段的作用:

set MY_VARIABLE = "some\path\here"  
"!MY_VARIABLE:\=/!"
Run Code Online (Sandbox Code Playgroud)

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

另一个混淆点是下面的代码.

set SOME_VARIABLE=!SOME_ARGUMENTS:\=\\!  
set SOME_VARIABLE=!SOME_ARGUMENTS:"=\"!
Run Code Online (Sandbox Code Playgroud)

另外,你能告诉我上面第3和第4行的情况吗?

以下变量将转换为PowerShell的内容是什么?

set TN0=%~n0  
set TDP0=%~dp0  
set STAR=%*
Run Code Online (Sandbox Code Playgroud)

对此有任何帮助非常感谢.谢谢.

Aar*_*ron 1

DOS 批处理文件中的感叹号 (!) 引用中间值,如果您处于 for 循环中,则很有用。如果您使用 % 代替(在循环中),它将一遍又一遍地返回相同的值。

第 3 行和第 4 行分别将“SOME_VARIABLE”设置为“SOME_ARGUMENTS:\=\”和 SOME_ARGUMENTS:“=\”的中间值。再次,我猜测这些行来自循环。

至于变量赋值,Powershell 变量赋值的工作方式如下:

    $myVariable = "my string"
Run Code Online (Sandbox Code Playgroud)

~dp0(在 DOS 批处理中)转换为当前 bat 文件的路径(带驱动器号)。您可以通过执行“获取位置”在 Powershell 中获取该信息。

为什么有人需要为 STAR(*) 设置变量超出了我的范围,所以我假设存在一些编码问题或其他原因导致他们不能只使用星号。

~n0 我不确定;也许其他人知道那是什么。