在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中重命名命令的输出的主要内容,如果未能解决你的问题,请参考以下文章