13

Opracowałem skrypt PowerShell, który działa bez zarzutu. Jedynym wyzwaniem jest to, że pliki w podfolderach nie są przenoszone do miejsca docelowego.Skrypt PowerShell do przenoszenia plików i folderów, w tym podfolderów z jednej lokalizacji do drugiej starszej niż x dni

get-childitem -Path "\\servername\location" | 
    where-object {$_.LastWriteTime -lt (get-date).AddDays(-31)} | 
    move-item -destination "C:\Dumps" 

Nie mogę jeszcze bardziej dostosować skryptu.

Odpowiedz

10

Użyj opcji -Recurse na komendę Get-ChildItem dotrzeć do plików w podkatalogach, a następnie przenieść każdy indywidualnie przez potokiem kolekcję Move-Item

Get-ChildItem -Path "C:\Test" -Recurse | 
    Where-Object {$_.LastWriteTime -lt (Get-date).AddDays(-31)} | 
    Move-Item -destination "C:\Dumps" 

Oto zrzut ekranu:

screenshot

+0

Musaab. The -Recursive wydaje się nie działać. Czy możesz pomóc dalej? – user1926332

+0

Czy jesteś pewien, że pliki spełniają klauzulę where-object? Zaktualizuję odpowiedź za pomocą zrzutu ekranu, aby zilustrować, w jaki sposób używam opcji -Recursive. Sprawdź to i daj mi znać, co robię inaczej. –

+0

Hej, wielkie dzięki Musaab .... W rzeczywistości błędnie umieściłem jedną postać. – user1926332

12

Nie marnuj czasu, próbując ponownie wymyślić robocopy w PowerShell.

robocopy \\servername\location C:\Dumps /e /mov /minage:31 
+0

Ten skrypt kopiuje pliki do miejsca docelowego i tylko z głównego ścieżka. Chciałbym również dołączyć podfoldery. Chcę przenieść je w inne miejsce. – user1926332

+1

Użyj '/ s', aby powrócić do podfolderów. Użyj '/ e' (zamiast'/s'), aby dołączyć także puste podfoldery. Co masz na myśli przez "inną lokalizację"? Czy nie chcesz zachować struktury folderów? W takim przypadku możesz trzymać się programu PowerShell (z opcją '-Recursive', jak wspomniano @Musaab). Takie podejście może jednak spowodować utratę danych spowodowaną nadpisywaniem plików. –

+0

Dzięki Ansgar .... Twój skrypt robocopy wykonał zadanie, którego chciałem i więcej, udało mi się zbudować jeszcze jeden skrypt do innego użycia. – user1926332

6

Uproszczenie powyższej
robocopy A:\ B:\ /MIR /minage:31
Gdzie A: \ jest Twoim źródłem B: \ to miejsce

0

Potrzebowałem szybkiej jedną wkładkę, aby przenieść wszystkie dane od jednego dysku na inną. To zadziałało idealnie:

Get-ChildItem "E:" -Recurse | Przenieś pozycję -Destination "G:"

Powiązane problemy