Jak mogę użyć wiersza poleceń systemu Windows, aby zmienić rozszerzenia tysięcy plików na *****.jpg
?
Jak mogę użyć wiersza poleceń systemu Windows, aby zmienić rozszerzenia tysięcy plików na *****.jpg
?
Odpowiedzi:
Możesz użyć ren
(jak w zmianie nazwy ):
ren *.XXX *.YYY
I oczywiście zmień XXX i YYY na odpowiednie rozszerzenia. Spowoduje to zmianę od XXX do YYY. Jeśli chcesz zmienić wszystkie rozszerzenia, po prostu użyj ponownie symbolu wieloznacznego:
ren *.* *.YYY
Jednym ze sposobów wykonania tego działania rekurencyjnego jest użycie FOR
polecenia. Może być używany z /R
opcją rekurencyjnego zastosowania polecenia do pasujących plików. Na przykład:
for /R %x in (*.txt) do ren "%x" *.renamed
zmieni wszystkie .txt
rozszerzenia na .renamed
rekurencyjne, zaczynając od bieżącego katalogu.
%x
jest zmienną przechowującą pasujące nazwy plików.
A ponieważ masz tysiące plików, pamiętaj, aby poczekać, aż kursor ponownie zacznie migać, wskazując, że wszystko działa.
Uwaga: działa to tylko z cmd. Nie będzie działać na Powershell ani Bash
ren *.* *.jpg > E:\Log\Cmd\ExtChange\ext.txt
?
FOR
Zachowanie związane ze zmianą nazwy jest czasami „mniej niż intuicyjne”; na przykład...
ren * .THM * .jpg zmieni nazwy plików THM, aby miały rozszerzenie .jpg. np .: GEDC003.THM będzie GEDC003.jpg
ren * .THM * b.jpg zmieni nazwy plików THM na * .THMb.jpg. np .: GEDC004.THM zmieni się na GEDC004.THMb.jpg
ren * .THM * .b.jpg zmieni nazwy plików THM na * .b.jpg, np .: GEDC005.THM zmieni się na GEDC005.b.jpg
UWAGA: nie dla systemu Windows
Używając ren-1.0 poprawną formą jest:
"ren *.*" "#2.jpg"
Z man ren
Wzorzec zastępczy to inna nazwa pliku z osadzonymi indeksami symboli wieloznacznych, z których każdy składa się ze znaku #, po którym następuje cyfra od 1 do 9. W nowej nazwie pasującego pliku, indeksy symboli wieloznacznych są zastępowane rzeczywistymi znakami pasującymi do odnośnika symbole wieloznaczne w oryginalnej nazwie pliku.
i
Zwróć uwagę, że powłoka normalnie rozwija symbole wieloznaczne * i?, Co w przypadku ren jest niepożądane. Dlatego w większości przypadków konieczne jest ujęcie wzoru wyszukiwania w cudzysłów.
man ren
? Pytanie dotyczyło systemu Windows / cmd
. Czy teraz udostępniają one man
strony? Co to jest ren-1.0
i jak możemy zobaczyć jego man
stronę w kontekście?
to proste
ren *.* *.jpg
spróbuj tego w wierszu polecenia
Tylko dla osób, które chcą to zrobić w plikach wsadowych, ten kod działa:
FOR /R "C:\Users\jonathan\Desktop\test" %%f IN (*.jpg) DO REN "%%f" *.png
W tym przykładzie wszystkie pliki z rozszerzeniami .jpg w katalogu C: \ Users \ jonathan \ Desktop \ test zostaną zmienione na * .png.
Zmień nazwę wielu rozszerzeń plików:
Chcesz zmienić ringtone1.mp3
, ringtone2.mp3
aby ringtone1.wav
,ringtone2.wav
Oto jak to zrobić: jestem na dysku d w wierszu polecenia (CMD), więc używam:
d:\>ren *.* *.wav
To tylko przykład rozszerzeń plików, możesz użyć dowolnego typu rozszerzenia pliku, takiego jak WAV, MP3, JPG, GIF, bmp, PDF, DOC, DOCX, TXT, zależy to od systemu operacyjnego.
A ponieważ masz tysiące plików, pamiętaj, aby poczekać, aż kursor ponownie zacznie migać, wskazując, że wszystko działa.
W moim przypadku miałem katalog z ponad 800 plikami kończącymi się na .StoredProcedure.sql
(były skrypty z SSMS ).
Przedstawione powyżej rozwiązania nie działały. Ale wymyśliłem to:
(Na podstawie odpowiedzi na programowanie wsadowe - uzyskaj względną ścieżkę pliku )
@echo off
setlocal enabledelayedexpansion
for %%f in (*) do (
set B=%%f
set B=!B:%CD%\=!
ren "!B!" "!B:.StoredProcedure=!"
)
Powyższy skrypt usuwa podciąg .StoredProcedure
z nazwy pliku. Jestem pewien, że można go dostosować do większej liczby przypadków, poprosić o wkład i ogólnie być bardziej ogólny.
set
polecenia z tym jednym z nich: set "B=%%~nxf"
. ( %%~nxf
To n AME i E x napięcie %%f
). %cd%
może być niepoprawny, kiedy robisz to rekurencyjnie.
Wiem, że to jest tak stare, ale wylądowałem na nim, a podane odpowiedzi nie działają dla mnie na PowerShell, więc po przeszukaniu znalazłem to rozwiązanie
zrobić to w PowerShell
Get-ChildItem -Path C:\Demo -Filter *.txt | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".old")}
Kredyt trafia do http://powershell-guru.com/powershell-tip-108-bulk-rename-extensions-of-files/
To, co zadziałało, to ten (najpierw cd do folderu):
Get-ChildItem -Filter *.old | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".new")}