在PowerShell中重命名命令的输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在PowerShell中重命名命令的输出相关的知识,希望对你有一定的参考价值。

我使用Mp4box将文件分成一分钟部分,通常Mp4box使用file_nnn.mp4,其中n就像001,002,003,....我想将它重命名为partn.mp4,其中n也是增加的奇数。我使用此代码,但它无法正常工作。

Mp4box -split 60 file.mp4 | foreach- 
object -begin {$c=1} -process rename- 
item $_ -newname "part$c.mp4"; 
$c=$c+2 }
答案

那么让我们谈谈你的错误。

Mp4box -split 60 file.mp4 |
    foreach-object -begin {$c=1} -process 
rename-item $_ -newname "part$c.mp4"; 
$c=$c+2
}

这不是有效的powershell语句。开始很好但是在第一个管道之后|然后使用带有参数-process和-begin的不完整的foreach-object,但它们由foreach块分隔,在那里创建一个变量$ c,该脚本的其余部分无法看到它,因为它的范围仅限于foreach。然后你有一个在管道外面的重命名项目然后尝试使用管道变量$ _,它将为null,因为它在管道外部。最后你添加2到$ c,这是null,因为它超出了foreach中$ c的范围。当没有开括号时,您还可以添加右括号}。

这是一个完全取决于Mp4box输出的工作脚本。如果Mp4box不是powershell命令而是可执行文件,那么这将不起作用。

$C = 1
Mp4box -split 60 file.mp4 |
    %{
        rename-item $_ -newname "part$c.mp4"
        $C += 2
     }

让我们看看上面的内容。我在foreach之外调用$ C = 1,因此它可用于foreach范围。

我管道Mp4box的输出为%,这是foreach-object的简写。

在%(foreach-object)括号{}内部,它从管道中重命名项目$ _。

然后它使用简写为+ = 2添加到c,这与添加到($ C = $ C + 2)相同

现在再次这纯粹依赖于Mp4box的输出。

以上是关于在PowerShell中重命名命令的输出的主要内容,如果未能解决你的问题,请参考以下文章

text 在PowerShell中重命名扩展

在 XML 输出中重命名标签

在bash中重命名文件名

在 Xcode 中重命名或重构文件

如何在AWS Linux中重命名wall命令?

如何在 Windows 7 中重命名文件夹:名称中包含空格的命令行 [关闭]