У меня есть скрипт, который удаляет определенные символы из всех файлов / папок (он же 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
Я не хочу, чтобы это произошло. Есть ли способ заставить его слиться так, как мне нужно?