我的文件夹中有一个批处理文件和一个文本文件。
该文本文件包含指向该文本文件所在当前文件夹的路径。
我想用任何内容替换文本文件中当前目录路径的实例。
因为它是 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,""