Powershell:用批处理文件替换文本文件中的当前目录路径,不包含任何内容

Powershell:用批处理文件替换文本文件中的当前目录路径,不包含任何内容

我的文件夹中有一个批处理文件和一个文本文件。

该文本文件包含指向该文本文件所在当前文件夹的路径。

我想用任何内容替换文本文件中当前目录路径的实例。

因为它是 powershell,所以使用%~dp0不起作用:

-replace '%~dp0', ''

%~dp0我以为它不会这样,于是我查找了Powershell(v3+)中的等效项并发现它是$PSScriptRoot,但是在我的 powershell 命令中运行它不起作用,当前文件夹的路径仍然保留在文本文件中:

-replace '$PSScriptRoot', ''

我还读到$currentScriptPath在 powershell v3 之前使用过,所以我尝试了:

-replace '$currentScriptPath', ''

也不起作用。

编辑:尝试省略单引号,但没有效果:

-replace $PSScriptRoot

尝试了这个 - 不起作用(将命令的其他部分改为单引号而不是双引号,以解释现在使用双引号的这一部分 - 但我知道过去在从批处理文件运行的其他 powershell 命令上这样做过,它会停止命令工作)

-Replace $PSScriptRoot,""

试过了,没有用...

-replace $PSScriptRoot, ''

(将命令的其他部分放回到双引号中)

我猜它不起作用是因为我没有在.ps1脚本中运行 powershell 命令?

是否可以将此命令保存在批处理文件中,并用 powershell 替换文本文件中的路径?

干杯。

答案1

Powershell 不会评估用单引号括起来的字符串中的变量。请改用双引号,或者如果变量包含您要使用的整个字符串,并且仅此而已,则根本不要用引号引起来:

$string_containing_filename_with_complete_path -replace $PSScriptRoot,""

相关内容