【发布时间】:2022-12-11 17:36:30
【问题描述】:
我正在尝试运行一个简单的 .bat 来运行,它将包含空格的文件重命名为下划线。我在记事本++中创建了.bat,并在网络驱动器上运行它。这是命令:
Q:\Planning dir | Rename-Item -NewName {$_.name -replace " ", "_"}
pause
我已经在这个目录中的 PowerShell 中测试了这个脚本,就像这样,它可以工作。我还测试了我在同一目录中创建的Robocopy.bat,它也可以工作。不知道我做错了什么。我不是程序员,并且具有非常非常基本的编程技能。
谢谢你的帮助。
尝试在同一目录中的 PowerShell 中测试该命令,它有效。还尝试了 robocopy 命令和 .bat 在同一目录中包含相同的 robocopy 命令,也没有问题。我假设我有某种形式的用户错误。
我只想能够运行这个 .bat 并快速重命名文件以节省一点时间,因为这是我每天做几十次的事情。应该很容易实现自动化。
【问题讨论】:
-
您不能直接在批处理文件中运行 powershell 命令。使用
powershell命令调用它们。 -
Q:\Planning dir不是 cmd.exe、powershell.exe、批处理文件 (.cmd | .bat) 或 PowerShell 脚本 (.ps1) 中的有效命令。 -
在纯批处理中(不调用 powershell),您可以使用 String Substitution 将空格替换为下划线。
-
从批处理文件中,最好使用
.cmd扩展名,而不是 20 世纪的.bat扩展名,它看起来应该更像这样:@%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -Command "Get-ChildItem -Filter '* *' | Rename-Item -NewName { $_.Name -Replace ' ', '_' }"。请注意我是如何使用完整的 cmdlet 名称Get-ChildItem,而不是它的别名之一gci、dir或ls。
标签: powershell batch-file file-rename