Arrays 如何在PowerShell中使用阵列模式新名称重命名文件?

Arrays 如何在PowerShell中使用阵列模式新名称重命名文件?,arrays,powershell,loops,rename,Arrays,Powershell,Loops,Rename,我想重命名一些文件。这取决于我拥有的新名称字符串数组。我试过了,但文件正在重命名所有文件。我的期望是,该文件只重命名3个文件,因为我只有3个数组。请帮助任何有想法的人。非常感谢 $Names = @("Student", "Employee", "Married") $DataFile = Get-ChildItem -Path .\*.txt #There are more than 10 files foreach ($name

我想重命名一些文件。这取决于我拥有的新名称字符串数组。我试过了,但文件正在重命名所有文件。我的期望是,该文件只重命名3个文件,因为我只有3个数组。请帮助任何有想法的人。非常感谢

$Names = @("Student", "Employee", "Married")

$DataFile = Get-ChildItem -Path .\*.txt #There are more than 10 files

foreach ($name in $Names)
{
     $DataFile | Rename-Item -NewName {"$name" + $_.Name} 
}

为此,您需要创建一个计数器(
$i
)以索引到另一个数组中:

$Names = 'Student', 'Employee', 'Married'
$DataFile = Get-ChildItem -Path .\*.txt

$Names | ForEach-Object { $i = 0 } {
    Rename-Item $DataFile[$i] ($_ + $DataFile[$i++].Name)
}
请注意,支持多个脚本块:

为流程参数提供多个脚本块时 第一个脚本块始终映射到开始块。如果有 只有两个脚本块,第二个块映射到进程 块如果有三个或更多脚本块,则第一个脚本块为 始终映射到开始块,最后一个块映射到结束块 块,并且中间的块都映射到进程块


为此,您需要创建一个计数器(
$i
)以索引到另一个数组中:

$Names = 'Student', 'Employee', 'Married'
$DataFile = Get-ChildItem -Path .\*.txt

$Names | ForEach-Object { $i = 0 } {
    Rename-Item $DataFile[$i] ($_ + $DataFile[$i++].Name)
}
请注意,支持多个脚本块:

为流程参数提供多个脚本块时 第一个脚本块始终映射到开始块。如果有 只有两个脚本块,第二个块映射到进程 块如果有三个或更多脚本块,则第一个脚本块为 始终映射到开始块,最后一个块映射到结束块 块,并且中间的块都映射到进程块


如果只想重命名
$Names
数组中的字符串数量,可以执行以下操作:

$Names = 'Student', 'Employee', 'Married'
$count = 0
Get-ChildItem -Path .\*.txt | Select-Object -First ($Names.Count) | ForEach-Object {
    $_ | Rename-Item -NewName ('{0}-{1}' -f $Names[$count++], $_.Name)
}

如果只想重命名
$Names
数组中的字符串数量,可以执行以下操作:

$Names = 'Student', 'Employee', 'Married'
$count = 0
Get-ChildItem -Path .\*.txt | Select-Object -First ($Names.Count) | ForEach-Object {
    $_ | Rename-Item -NewName ('{0}-{1}' -f $Names[$count++], $_.Name)
}

要重命名的文件的名称是什么?所需的输出是什么?从您的代码来看,一次重命名所有10个文件的原因似乎是因为您将$DataFile中的所有文件通过管道重命名项。由于$Names数组中有3个元素,因此总共执行了30次文件重命名。要重命名的文件的名称是什么,以及所需的输出是什么?从代码看,一次重命名所有10个文件的原因似乎是因为您将$DataFile中的所有文件通过管道重命名项。由于$Names数组中有3个元素,因此总共执行了30次文件重命名。