0

大家好,很抱歉这个蹩脚的问题,但我真的在这里挣扎。我可以将要重命名的文件以及文本文件的内容放入变量中,如下所示:

$filestochange = Get-ChildItem -Path "c:\test"
$FileNames = Get-Content "c:\src.txt"

但是如何将它传递给 Rename-Item 命令,以便 txt 文件中的每一行都用于连续重命名另一个文件?

我试过了 :Rename-Item -Path $filestochange -NewName $FileNames

出现错误:

重命名项目:无法将“System.Object[]”转换为参数“Path”所需的类型“System.String”。不支持指定的方法。

我也在尝试 ForEach,但我不知道如何在这种情况下为 rename-item 命令添加另一个变量。

我相信这很简单,一旦有人知道如何使用所有这些 $_. {}""

请帮助我更进一步。非常感谢!

4

1 回答 1

3

使用变量来跟踪您已经使用了多少个文件名:

$filestochange = Get-ChildItem -Path "c:\test"
$FileNames = Get-Content "c:\src.txt"

# use this variable to keep track of the next file name to use
$counter = 0

foreach($file in $filestochange){
  # Remember to check if we have any file names left to use
  if($counter -lt $FileNames.Length){
    # Rename the next file to the next name in `$FileNames`, then increment counter
    $file |Rename-Item -NewName $FileNames[$counter++]
  } 
  else {
    Write-Warning "We ran out of file names!"
    break
  }
}
于 2022-02-24T13:26:55.507 回答