Move-Item -LiteralPath $ _. Name $ _. Name.Заменить и объединить папки - PullRequest
0 голосов
/ 12 января 2020

У меня есть скрипт, который удаляет определенные символы из всех файлов / папок (он же name.replace)

get-childitem | ForEach-Object { Move-Item -LiteralPath $_.name $_.name.Replace("String)","ThingToChangeTo")}

В настоящее время использую его для переименования папок, чтобы объединить их. Однако объединение папок не работает так, как я хочу. Лучший способ объяснить это - привести пример.

Вот что я хочу сделать :

    C:\Main Folder
       C:\Main Folder\Folder (A)
            C:\Main Folder\Folder (A)\File1.png
            C:\Main Folder\Folder (A)\File2.png
       C:Main Folder\Folder (B)
            C:Main Folder\Folder (B)\FileA.exe
            C:Main Folder\Folder (B)\FileB.exe

И после запуска этого скрипта

get-childitem | ForEach-Object { Move-Item -LiteralPath $_.name $_.name.Replace(" (A)","")}
get-childitem | ForEach-Object { Move-Item -LiteralPath $_.name $_.name.Replace(" (B)","")}

, который удаляет как «(A)», так и «(B)» (то есть обе папки будут называться «Папка»)

    C:\Main Folder
       C:\Main Folder\Folder
            C:\Main Folder\Folder\File1.png
            C:\Main Folder\Folder\File2.png           
            C:\Main Folder\Folder\FileA.exe
            C:\Main Folder\Folder\FileB.exe

Однако именно это на самом деле происходит

C:\Main Folder
           C:\Main Folder\Folder (A)
                C:\Main Folder\Folder (A)\File1.png
                C:\Main Folder\Folder (A)\File2.png
           C:Main Folder\Folder (B)
                C:\Main Folder\Folder (B)\FileA.exe
                C:\Main Folder\Folder (B)\FileB.exe

И после запуска этого скрипта

get-childitem | ForEach-Object { Move-Item -LiteralPath $_.name $_.name.Replace(" (A)","")}
get-childitem | ForEach-Object { Move-Item -LiteralPath $_.name $_.name.Replace(" (B)","")}

, который удаляет как «(A)», так и «(B)» (то есть обе папки будут называться «Папка»)

    C:\Main Folder
       C:\Main Folder\Folder
            C:\Main Folder\Folder\File1.png
            C:\Main Folder\Folder\File2.png
            C:Main Folder\Folder\Folder (B)\           
                 C:\Main Folder\Folder (B)\FileA.exe
                 C:\Main Folder\Folder (B)\FileB.exe

Я не хочу, чтобы это произошло. Есть ли способ заставить его слиться так, как мне нужно?

...