PowerShell 和批处理文件

PowerShell 和批处理文件

我已经直接在 PowerShell 中编写了一行 PowerShell 代码并且它运行完美,但我无法让 .bat 来运行它。

我认为我的 PowerShell 脚本的运行已被公司阻止。

如果我可以在 CMD 中获得相同的结果,那么它将解决该问题。

以下是 PowerShell 代码:

CD C:\Temp

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

此代码将 PLANVIEW-Layout1.pdf 转换为 PLANVIEW.pdf,但它将采用带有 -Layout1 的任何文件名并删除 -Layout1。

我的 CAD 程序在创建 .pdf 时会在文件名中添加“-Layout1”或“-Model1”。

我有时会创建数百个 PDF,然后逐个重命名它们很麻烦。

如果我在 PowerShell 窗口中输入上述 PowerShell 代码,它就能完美运行。

我希望其他用户也能使用它,而不必每次都输入所有代码。

编辑:抱歉,评论有点乱...当我
@echo off PowerShell.exe -noexit -ExecutionPolicy Bypass -File "MyScript.ps1" Pause
使用 MyScript.ps1运行此 .bat 时:
CD C:\Temp Get-ChildItem -Filter "*-Layout1*" -Recurse | Rename-Item -NewName {$_.name -replace ‘-Layout1’,'' }

我现在在 CMD 中得到了这个:

You must provide a value expression on the right-hand side of the '-replace' operator. At C:\Temp\MyScript.ps1:3 char:85 * Get-ChildItem -Filter "-Layout1" -Recurse | Rename-Item -NewName {$_.name -replace <<<< a?~-Layout1a?T,'' } + CategoryInfo :ParserError: (:) []. ParentContainsErrorRecordException + FullyQualifiedErrorId :ExpectedValueExpression

答案1

关于错误输出和 ps1 代码,似乎‘-Layout1’周围的“ ' ”引号无法很好地识别。

您可以尝试用这样的简单引号来替换它们:

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

相关内容