Zmień nazwę wielu plików w folderze, dodaj prefiks (Windows)

Chciałbym wsadowo zmienić nazwy plików w folderze, dodając nazwę folderu do nowych nazw. pliki w C:\house chores\ zostaną przemianowane na house chores - $old_name.

Author: ExillustX, 2014-01-02

6 answers

Opcja 1: Korzystanie Z Windows PowerShell

Otwórz menu windows. Wpisz: "PowerShell" i otwórz okno poleceń 'Windows PowerShell'.

Goto folder z pożądanymi plikami: np. cd "C:\house prace domowe" Uwaga: adres musi zawierać cudzysłowy"", jeśli występują spacje.

Możesz użyć' dir', aby zobaczyć wszystkie pliki w folderze. Użycie ' | 'spowoduje rurociąg wyjścia' dir ' dla następującego polecenia.

Uwagi:' dir 'jest aliasem' Get-ChildItem'. Zobacz też: wiki: cmdlets . Można zapewnić dalszą funkcjonalność. np.' dir-recurse ' wypisuje wszystkie pliki, foldery i podfoldery.

Co jeśli chcę tylko zakres plików?

Zamiast 'dir |' mogę użyć:

dir | where-object -filterscript {($_.Name -ge 'DSC_20') -and ($_.Name -le 'DSC_31')} |

Do zmiany nazw wsadowych z nazwą katalogu jako prefiksem:

dir | Rename-Item -NewName {$_.Directory.Name + " - " + $_.Name}

Opcja 2: Użycie Wiersza Polecenia

W folderze naciśnij shift+kliknij prawym przyciskiem myszy: wybierz 'Otwórz okno poleceń tutaj'

for %a in (*.*) do ren "%a" "prefix - %a"

Jeśli jest dużo plików, może warto dodać komendę' @echo off 'przed tym i komendę' Echo on ' na końcu.

 97
Author: ofer.sheffer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-17 17:12:26

Problem z dwoma odpowiedziami Powershell polega na tym, że prefiks może zostać zduplikowany, ponieważ skrypt potencjalnie uruchomi plik zarówno przed, jak i po jego zmianie, w zależności od katalogu, który zostanie uruchomiony podczas procesu zmiany nazwy. Aby to obejść, po prostu użyj opcji -Exclude:

Get-ChildItem -Exclude house chores-* | rename-item -NewName { "house chores-" + $_.Name }

Spowoduje to, że proces nie zmieni nazwy jednego pliku więcej niż jeden raz.

 21
Author: Dave.Gugg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-17 15:10:07

Wolne oprogramowanie ' Bulk Rename Utility ' również działa dobrze (i jest potężne również dla zaawansowanych zadań). Pobierz i instalacja trwa minutę.

Zobacz screeny i tutorial na oryginalnej stronie.

--

Nie mogę udostępniać zrzutów ekranu krok po kroku, ponieważ obrazy będą musiały zostać wydane na licencji Creative Commons , a nie jestem właścicielem zrzutów ekranu oprogramowania.

Disclaimer: I am not associated ze wspomnianym oprogramowaniem / firmą w jakikolwiek sposób. Podobał mi się produkt do własnego zadania, spełnia wymagania OP i podobne, polecam.

 12
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-15 14:01:03

To działało dla mnie, najpierw cd w katalogu, na który chcesz zmienić nazwy plików, a następnie uruchom następujące polecenie:

Get-ChildItem | rename-item -NewName { "house chores-" + $_.Name }
 11
Author: user3971138,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-27 10:32:05

Na podstawie @ ofer.sheffer odpowie to polecenie mass rename i doda aktualną datę do nazwy pliku. ie " plik.txt "staje się" 20180329-plik.txt " dla wszystkich plików w bieżącym folderze

for %a in (*.*) do ren "%a" "%date:~-4,4%%date:~-7,2%%date:~-10,2% - %a"
 1
Author: karpa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-29 15:03:09

Wiem, że to stare pytanie, ale wiele się nauczyłem z różnych odpowiedzi, ale wymyśliłem własne rozwiązanie jako funkcję. Powinno to dynamicznie dodawać folder nadrzędny jako prefiks do wszystkich plików, które pasują do określonego wzorca, ale tylko wtedy, gdy nie ma jeszcze tego prefiksu.

function Add-DirectoryPrefix($pattern) {
    # To debug, replace the Rename-Item with Select-Object
    Get-ChildItem -Path .\* -Filter $pattern -Recurse | 
        Where-Object {$_.Name -notlike ($_.Directory.Name + '*')} | 
        Rename-Item -NewName {$_.Directory.Name + '-' + $_.Name}
        # Select-Object -Property Directory,Name,@{Name = 'NewName'; Expression= {$_.Directory.Name + '-' + $_.Name}}
}

Https://gist.github.com/kmpm/4f94e46e569ae0a4e688581231fa9e00

 0
Author: kmpm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-04 16:34:42