带有用户输入的 PowerShell 和批处理文件

带有用户输入的 PowerShell 和批处理文件

好的,首先感谢nex84感谢回答我上一个问题,以及通过此链接提供意见的所有人https://superuser.com/a/1051727/569550...

我现在有一个新问题,但它与链接中的代码相同。

我创建了一个脚本,它可以从文件名中删除文本并将其替换为新文本或空白。

这在我给出的链接后面的最后一个问题中已经提到了。我添加了一个用户输入,以便用户可以输入要删除的文本和他们想要添加的文本。

我正确地删除了部分内容,但在文件名中添加新文本时遇到了麻烦。有什么建议吗...

下面的代码适用于删除,但是当重命名时,脚本会在文件名中添加“$Rename”,而不是用户输入的内容。

例如:如果用户删除了“-Layout1”但在文件名中添加了“-Model”,我们得到:

BLABLA-Layout1.pdf ==>  BLABLA$Replace.pdf

代码:

CD C:\TempPDF 
$Filter = Read-Host -Prompt 'Input Text To Be Removed' 
$Rename = Read-Host -Prompt 'Input Text To Be Added' 
Write-Host "You input server '$Filter' and '$Rename'" 
Get-ChildItem -Filter "*$Filter*" -Recurse | Rename-Item -NewName {$_.name -replace "$Filter",'$Rename' }

答案1

Powershell 中的单引号仅分隔字符串值。在这种情况下,将变量 $Rename 传递给文件名时使用双引号。

Get-ChildItem -Filter "*$Filter*" -Recurse | Rename-Item -NewName {$_.name -replace "$Filter","$Rename" }

相关内容