我正在使用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 }
答案 0 :(得分:0)
所以,让我们谈谈你的错。
Mp4box -split 60 file.mp4 |
foreach-object -begin {$c=1} -process
rename-item $_ -newname "part$c.mp4";
$c=$c+2
}
这不是有效的powershell语句。 开头很好,但是在第一个管道 | 之后,您可以使用参数-process和-begin的不完整的foreach对象,但是它们由foreach块分隔,您可以在其中创建变量 $ c ,该脚本的其余部分无法看到,因为其范围仅限于foreach。然后,您有一个位于管道 | 外部的重命名项,然后尝试使用管道变量 $ _ ,该变量将为空,因为它位于管道 | 。最后,您在 $ c 中添加2,因为在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 的简写。
在%(每个对象)方括号 {} 中,它将从管道 | 中重命名项目 $ _ 。 strong>。
然后使用 + = 的简写将2加到c,这与添加到($ C = $ C + 2)
相同现在,这再次完全取决于Mp4box的输出。