我的文件夹中有一些文件。我想将扩展名一一重命名。更改第一个扩展名文件后,将执行一些过程,然后再次返回以更改下一个扩展名并再次执行该过程。
我仍然不知道要一一重命名,只能同时重命名所有文件。
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
答案 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
}