簡體   English   中英

如何將子文件夾中的文件重命名為父目錄Powershell

[英]How to rename files within subfolder to the parent directory Powershell

我在運行允許子文件夾中的文件從其父目錄命名的循環時遇到問題。 我目前的文件結構如下:

C:\test data
      Folder 1
          12345676.txt
          35234443.mp4
          23432234.avi
      Folder 2
          56859522.txt
          35234443.mp4
          23432234.avi

想要的最終結果。

C:\test data
      Folder 1
         Folder 1.txt
         Folder 1.mp4
         Folder 1.avi
      Folder 2
         Folder 2.txt
         Folder 2.mp4
         Folder 2.avi

這是我正在嘗試修改的代碼

$path = "C:\test data" 

Get-ChildItem $path -Directory | Foreach-Object { 

$file = $_.Fullname
$file = $file -replace ('4K','')
$file = $file -replace ('\s+\[]','')

Write-Output $file

rename-Item -LiteralPath $_.FullName -NewName $file

Get-ChildItem $path
} 

### Rename files in Subfolders 
Get-ChildItem $path -Recurse -File | Foreach-Object { 
    Rename-Item -LiteralPath $_.FullName -NewName 
    ($_.Directory.name) -ErrorAction SilentlyContinue
} 

該腳本更改文件的名稱,但不保留擴展名。

C:\test data
      Folder 1
          Folder 1 (file)
          Folder 1 (file)
          Folder 1 (file)
      Folder 2
          Folder 2 (file)
          Folder 2 (file)
          Folder 2 (file)

任何信息都會有很大幫助,因為我仍在學習如何在 Powershell 中編碼。

我不知道你為什么要這樣做。 我下面的代碼僅在子文件夾中文件名的每個擴展名不同時才有效

有很多方法可能會出錯,所以我添加了一個錯誤操作。

同樣,我不確定你會得到你想要的,但這會滿足你的要求。

請運行測試。

$path = "C:\test\"

Get-ChildItem $path -Recurse -File | Foreach-Object { 
    Rename-Item -LiteralPath $_.FullName -NewName ($_.Directory.name + '.' + $_.name.split('.')[1]) -ErrorAction SilentlyContinue
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM