Answers:
该Get-ChildItem
cmdlet可获取所有当前文件夹中的文件,然后使用管道运算符(|
)来发送这些文件重命名项目。
它逐个发送文件,每个文件作为一个单独的项目,以便Rename-Item
逐个接收它们并依次对每个文件进行操作。
在脚本块中,$_
自动变量表示通过管道进入命令时的每个文件对象,因此它可以对其进行操作。
此行为与操作系统的行为非常不同,其中管道中的第一个命令将所有输出生成为一个列表,然后通过管道将其作为一个块传递。
PowerShell管道哲学有以下目标:
这样,您可以对程序进行字符串处理,其中每个程序都能很好地完成一件事,而不需要脚本使用诸如列表之类的人工对象。这样的复杂对象或列表需要解析,PowerShell通过传递项而不是列表来避免解析。
总而言之,ForEach-Object
并不是必需的,因为PowerShell管道的概念是专门为避免需要它的循环而设计的。这里没有隐含的循环,只有两个程序,一个生成由管道中的下一个处理的项目。
{}
上-NewName
是封闭的操作数。这是个问题吗?
{}
使得%
消失了..但我在文档中找不到这种用法
{}
吗?