Jak zmienić nazwę 80 000 plików jednocześnie w systemie Windows


8

Mam 80 000 plików w folderze i muszę zmienić ich nazwy

filename.jpg

do

._filename.jpg

w środowisku Windows, chyba z dos. Powodem jest to, że skompresowałem te pliki do tar.gz z Uniksa i skopiowałem do systemu Windows iz jakiegoś powodu nazwy plików uległy zmianie.

Czy możesz mi powiedzieć, jakie jest polecenie, aby to zrobić? dzięki

Odpowiedzi:


3

Możesz użyć wbudowanego renamelubren polecenia:

ren *.jpg ._*.jpg

Chociaż, podobnie jak w przypadku wszystkich tych rzeczy, spróbuj najpierw w katalogu zawierającym tylko kilka plików.


1
Podoba mi się twoje podejście, ale mam 2 problemy: (1) pierwsze litery nazw plików są zastępowane. Innymi słowy, „._” nie jest dodawane na początku, ale zastępuje pierwsze 2 litery. (2) „._” faktycznie nie działa. Jeśli używam, na przykład „__”, to działa. Myślę, że kropka „.” daje pewne problemy
aneuryzm

@Patrick - Muszę przyznać, że nie miałem okazji tego w pełni przetestować i tak, myślę, że masz rację co do kropki powodującej problemy.
ChrisF,

To jest niepoprawne i nie dzieje się tak z powodu kropek. renmoże zastąpić tekst tekstem o tej samej długości. Na przykład, jeśli masz pliki file1.txti file2.txt, ren file*.txt blah*.txtrobi to, co można oczekiwać (teraz masz pliki blah1.txti blah2.txt). Jeśli jednak wpiszesz następnie ren blah*.txt myfile*.txtpolecenie bomby, ponieważ zmienia ono nazwę blah1.txtna myfile.txt(nie myfile1.txt), a następnie nie może zmienić nazwy blah2.txtna, myfile.txtponieważ ten plik już istnieje.
David Richerby

15

Oto sposób korzystania z PowerShell:

Przejdź do swojego folderu i uruchom to polecenie

Get-ChildItem *.jpg | Rename-Item -newname {"._" + $_.Name}

Dodatkowa krótka wersja bonusowa:

gci *.jpg | ren -newname {"._" + $_.Name}

6

Mam 2 rozwiązania:

  1. Wszystkie pliki znajdują się w tym samym folderze

    • uruchom następujące polecenie z wiersza polecenia w tym folderze:

      for /f "delims=¯" %i in ('dir /b /on') do ren "%i" "._%i"
      
  2. kompletne rozwiązanie, gdy w podfolderach znajdują się pliki ORAZ gdy chcesz zamienić pierwsze „n” znaki na żądany ciąg: D

    • utwórz plik wsadowy za pomocą następującego polecenia
    • zmień parametry zmiennych na żądane
      • path: umieść w ""ścieżce katalogu głównego plików (np. „C: \ dokumenty i ustawienia \ użytkownik \ pulpit \ nowy folder”
      • numfirstchars2replace: wstaw liczbę z pierwszymi znakami do zastąpienia (w twoim przypadku 2)
      • str2put: wstaw ciąg do dodania jako prefiks nowej nazwy pliku (w twoim przypadku ._)
    • uruchom go w folderze innym niż pliki


@echo off

::only to tell user what this bat are doing
echo.1.initializing...

::enable that thing to allow, for example, incremental counter in a for loop :)
echo.- EnableDelayedExpansion
SETLOCAL EnableDelayedExpansion

::variables
echo.- variables
:: - place here the absolute root path of your files
set path="put here where are the root folder of your files"
set pathbak=%cd%
set numfirstchars2replace=2
set str2put=._

::go to %path% and its driveletter
echo.- entering the path you want
for /f "delims=¯" %%i in ('echo.%path%') do %%~di
cd %path%

::search all subfolders and save them to a temp file
echo.- searching for subfolders
echo.%path%>%temp%\tmpvar.txt
for /f "delims=¯" %%i in ('dir /s /b /on /ad') do echo."%%i">>%temp%\tmpvar.txt

::execute command for root folder and all found subfolders
echo.
echo.2.executing...
for /f "delims=¯" %%i in (%temp%\tmpvar.txt) do (
  cd %%i
  echo.- in folder: %%i
  for /f "delims=¯" %%j in ('dir /b /on /a-d') do (
    set newname=%%j
    set newname=!newname:~%numfirstchars2replace%,1000!
    echo.- renaming from "%%j" to "%str2put%!newname!"...
    ren "%%j" "%str2put%!newname!"
  )
)

echo.
echo.3.exiting...
::return to %pathbak% and its driveletter
for /f "delims=¯" %%i in ('echo.%pathbak%') do %%~di
cd %pathbak%

@echo on

w pełni przetestowane :) rozwiązuje Twój problem, w tym niektóre specyfikacje podane w komentarzu @ChrisF. Uwaga: w „delims = ¯”, jeśli w nazwie pliku użyto „¯”, zmień „¯” na inny znany Ci znak, który nie jest używany w nazwach plików
kokbira

zagłosowałeś z powodu twojego niewiarygodnie długiego skryptu, aby zrobić pętlę i zmienić nazwę sth. :)
wullxz,

Cóż, słusznie, mogłem utworzyć pętlę „for / f” ze wszystkimi plikami posortowanymi według nazwy, a następnie zmienić ich nazwę na „._lenameX.jpg” z X jako numerem zamówienia, ale pomyślałem, że to zrobić w innych przypadkach - jeśli w przyszłości pojawi się podobny problem, ktoś może zmodyfikować niektóre polecenia ...
kokbira 22.04.11

możesz użyć „delims =” zamiast „delims = ¯” (zapomniałem: D). również można używać do / f intead dla / F „delims =”, ponieważ robi to, co chcę w takim razie ...
kokbira

3

Jeśli wszystkie znajdują się w tym samym folderze, możesz zaznaczyć je wszystkie za pomocą Control+, Aa następnie nacisnąć, F2aby zmienić nazwę jednego z nich. Wszystkie kolejne pliki zostaną nazwane file (2), file (3) itp


3

Wypróbuj Powershell (preinstalowany w Windows 7):

Get-Childitem /path/to/your/files | foreach-object { move-item $_ $("._" + $_.name) }

(przetestowałem to w moim katalogu do pobrania).

Edycja : Kod Siim K. doda dodatkowy „.jpg” do każdego „._filename.jpg”. Usuń ostatnie „.jpg” z kodu Siim K. Masz krótki, elegancki kod do zmiany nazw plików.


dzięki, zaktualizowano. Ponownie użyłem kodu z podobnej komendy zmiany nazwy, która wymagała manipulacji rozszerzeniem i nie zauważyła.
Siim K


0

Flash Renamer zawsze uważałem za dobre narzędzie do zmiany nazw plików w partiach.

Ma wersje próbną i pełną (20 USD) i może zmieniać nazwy plików na podstawie metadanych - co jest bardzo przydatne do zmiany nazw plików MP3, do których używam głównie.


0

Jeśli szukasz przyjaznego dla użytkownika sposobu hurtowej zmiany nazwy, możesz wypróbować bezpłatne narzędzie Ant Renamer , istnieje ogromna lista działań, które możesz podjąć, a także daje wygodny podgląd przed dokonaniem jakiejkolwiek zmiany nazwy. Często go używam, gdy mam do czynienia z bibliotekami muzyki, zdjęć lub filmów.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.