Move-Item

Przenosi plik lub katalog z jednej lokalizacji do drugiej.

Move-Item to powershellowy cmdlet do przenoszenia plików i katalogów (a także innych elementów, np. kluczy rejestru) z jednej lokalizacji do drugiej. Pełni podwójną rolę: jeśli podasz inną nazwę docelową, posłuży też do zmiany nazwy — bo w PowerShell przenoszenie i rename to ta sama operacja widziana z dwóch stron. Ma swój alias move (oraz mi i mv), więc nie musisz za każdym razem wstukiwać pełnej nazwy.

Składnia i najważniejsze opcje

Podstawowa forma: Move-Item [-Path] [-Destination]

  • -Path — źródło, czyli co przenosisz. Akceptuje symbole wieloznaczne (*, ?), więc złapiesz wiele plików naraz.
  • -Destination — dokąd ma trafić. Jeśli wskażesz nazwę pliku zamiast folderu, dostaniesz przeniesienie połączone ze zmianą nazwy.
  • -LiteralPath — ścieżka brana dosłownie, bez interpretacji znaków wieloznacznych. Ratunek dla nazw z [, ] czy innymi metaznakami.
  • -Force — nadpisuje istniejące pliki w celu i rusza elementy tylko-do-odczytu albo ukryte. Bez tego PowerShell potrafi się grzecznie zatrzymać.
  • -Filter — filtr w składni dostawcy (np. *.log), wydajniejszy niż filtrowanie po pobraniu listy.
  • -Include / -Exclude — dokładają lub odrzucają elementy wg wzorca, np. tylko *.txt.
  • -PassThru — zwraca obiekt przeniesionego elementu (domyślnie cmdlet milczy).
  • -WhatIf / -Confirm — symulacja bez ruszania plików oraz pytanie o potwierdzenie. Twój pas bezpieczeństwa.

Przykłady użycia

  • Move-Item -Path C:\raporty\raport.txt -Destination D:\archiwum\ — przenosi jeden plik do innego katalogu, nazwa bez zmian.
  • Move-Item -Path C:\logi\*.log -Destination C:\archiwum\logi\ — przenosi wszystkie pliki .log jednym poleceniem.
  • Move-Item -Path .\stara_nazwa.txt -Destination .\nowa_nazwa.txt — przenosi i przy okazji zmienia nazwę pliku.
  • Move-Item -Path C:\dane\plik.csv -Destination D:\backup\plik.csv -Force — nadpisuje istniejący plik w celu bez pytania.
  • Get-ChildItem C:\pobrane -Filter *.pdf | Move-Item -Destination C:\dokumenty\pdf\ — łapie wszystkie PDF-y i wpuszcza je do cmdletu przez potok.

Częste błędy i pułapki

Nadpisywanie bez ostrzeżenia. Z -Force plik w celu znika bezpowrotnie — kosza tu nie ma. Zanim odpalisz operację na produkcji, przetestuj ją z -WhatIf.

Przenoszenie między dyskami a uprawnienia. Ruch w obrębie jednego wolumenu to szybka zmiana wpisu w katalogu; przeniesienie na inny dysk to realne kopiowanie plus usunięcie źródła — przy dużych folderach trwa i może paść w połowie.

Nazwy ze znakami specjalnymi. Plik z nawiasami kwadratowymi w nazwie potrafi nie zostać znaleziony, bo -Path traktuje je jak wzorzec. Użyj wtedy -LiteralPath.

Zajęty plik. Jeśli coś trzyma uchwyt do pliku (otwarty edytor, działający proces), dostaniesz błąd dostępu — zamknij program i spróbuj ponownie.

Powiązane komendy: Copy-Item (kopiowanie zamiast przenoszenia), Rename-Item (sama zmiana nazwy), Remove-Item (usuwanie), Get-ChildItem (listowanie do potoku). W CMD odpowiednikiem jest move, a w świecie Linuksa mv.