如何使用PowerShell在文件夹中一个接一个地选择文件来重命名扩展名?

时间:2019-06-19 06:54:56

标签: powershell

我的文件夹中有一些文件。我想将扩展名一一重命名。更改第一个扩展名文件后,将执行一些过程,然后再次返回以更改下一个扩展名并再次执行该过程。

我仍然不知道要一一重命名,只能同时重命名所有文件。

Function PICK_JOB
{
Write-Host "Pick 1st Job"
Get-ChildItem -Path C:\Users\F1 -File |
    ForEach-Object { Copy-Item -Path $_.FullName -Destination "C:\Users\F1\$($_.BaseName).TXT" }
} 

Function BEGIN
{
Write-Host "Creating"
& .\Folder.ps1 #execute a powershell script
Write-Host ">>>>>>Creating Finished<<<<<<"
}

#------------------------#
Function END
{
#Do some process
}
Function END_Proc
{
#Do some process
}
Function CHK
{
  if($MLG -eq "1" -and $b_UB -eq "101")
{ 
    Write-Host ">>>>>>BEGIN<<<<<"
    BEGIN
    PICK_JOB
}

if($MLG -eq "1" -and $b_UB -eq "444")
{ 
    END
    PICK_JOB
}

else
{
    END_Proc
}
}

$MLG = "1"
$b_UB = "101"
$b = CHK
$A = BEGIN

4 个答案:

答案 0 :(得分:1)

也许我看到了问题,但是...

现在您是

changing extansion{}
Process{}

但您需要

Changing extansion{
  Process{}
}

我希望这没错,您可以找到解决方案

答案 1 :(得分:1)

只是为了澄清您在做什么:

这是您的代码:

Get-ChildItem -Path C:\Users\F1 -File |
    ForEach-Object { Copy-Item -Path $_.FullName -Destination "C:\Users\F1\$($_.BaseName).TXT" }
} 

Get-ChildItem -Path C:\Users\F1 -File获取-File中的每个-Path C:\Users\F1
| ForEach-Object {}将对前一行返回的每一项进行处理。
Copy-Item ... -Destination "C:\...\$($_.BaseName).TXT"将复制项目$_(正在处理的当前项目)并将其重命名为$($_.BaseName).TXT。即(显然)是BaseName + .TXT

是的,您要一步一步对它们全部重命名。如果要处理项目,则必须在ForEach-Object {}块内进行处理。如果要分别重命名它们,则必须在if块中使用ForEach-Object {}语句以某种方式过滤它们,或者在将它们通过管道|插入ForEach-Object {}块之前

答案 2 :(得分:0)

这对您有用吗?我所做的只是将现有的function重新排列为一种更易理解的格式。

Function PICK_JOB
{
    Write-Host "Pick 1st Job"
    Get-ChildItem -Path C:\Users\F1 -File |
    ForEach-Object {
        Copy-Item -Path $_.FullName -Destination "C:\Users\F1\$($_.BaseName).TXT"
        <#call your process here#> 
    }
}

这将在每次文件操作后调用您的其他进程

答案 3 :(得分:0)

在给定的块中调用过程函数来解决问题

Get-ChildItem -Path C:\Users\F1 -File |
    ForEach-Object { 
          Copy-Item -Path $_.FullName -Destination "C:\Users\F1\$($_.BaseName).TXT" 
          # CALL YOUR PROCESS FUNCTION HERE
}