添加上下文菜单按钮以在文件夹内运行 powershell 命令

添加上下文菜单按钮以在文件夹内运行 powershell 命令

以之前这篇文章为例:https://superuser.com/a/701739/761937

这是我使用的命令。通常我右键单击文件夹背景,在选定路径中打开 powershell 提示符并运行以下命令:

(Get-ChildItem) | ForEach {Rename-Item  $_.FullName ($_.LastWriteTime.ToString("yyyyMMddHHmmss") + $_.Extension)}

我在文件夹背景上右键时添加了一个额外的按钮,可以自动运行我需要的命令。这是键的内容:

powershell.exe -noexit -command "(Get-ChildItem) | ForEach {Rename-Item  $_.FullName ($_.LastWriteTime.ToString("yyyyMMddHHmmss") + $_.Extension)}"

但我遇到了多个错误。PS 已本地化为我的语言,所以我不知道是否可以粘贴错误日志,但也许你可以检查我的命令的语法并告诉我是否有问题

答案1

将 ToString 方法中的日期格式模式中的双引号更改为单引号。

$_.LastWriteTime.ToString('yyyyMMddHHmmss')

应该没问题。您的命令参数以双引号开头并以 结束,ToString("并且不会处理命令的其余部分。

答案2

Rename-Item 接受管道输入,因此不需要 Foreach。要么转义内部双引号:

powershell.exe -NoP -NoE -C "(Get-ChildItem) | Rename-Item -NewName {($_.LastWriteTime.ToString(\"yyyyMMddHHmmss\") + $_.Extension)}"

或者按照 WeatherForecastingRat 建议的那样,使用单引号:

powershell.exe -NoP -NoE -C "(Get-ChildItem) | Rename-Item -NewName {($_.LastWriteTime.ToString('yyyyMMddHHmmss') + $_.Extension)}"

相关内容