Cara mengganti nama 80.000 file sekaligus di Windows

8

Saya memiliki 80.000 file dalam satu folder dan saya harus mengganti namanya semua dari

filename.jpg

untuk

._filename.jpg

di lingkungan Windows, saya kira dari dos. Alasannya adalah bahwa saya telah mengkompres file-file ini ke tar.gz dari unix dan disalin ke windows dan untuk beberapa alasan nama file telah berubah.

Bisakah Anda memberi tahu saya apa perintah untuk melakukannya? Terima kasih

aneuryzm
sumber

Jawaban:

3

Anda dapat menggunakan perintah renameatauren built-in :

ren *.jpg ._*.jpg

Padahal, seperti semua hal ini, cobalah di direktori yang hanya berisi beberapa file terlebih dahulu.

ChrisF
sumber
1
Saya suka pendekatan Anda, tetapi saya memiliki 2 masalah: (1) huruf pertama dari nama file diganti. Dengan kata lain, "._" tidak ditambahkan di awal tetapi menggantikan 2 huruf pertama. (2) "._" sebenarnya tidak berfungsi. Jika saya menggunakan, misalnya "__" maka itu berfungsi. Saya pikir titik, "." memberikan beberapa masalah
aneuryzm
@ Patrick - Saya harus mengakui bahwa saya tidak memiliki kesempatan untuk sepenuhnya menguji ini, dan ya saya pikir Anda benar tentang masalah yang menyebabkan titik.
ChrisF
Ini tidak benar dan itu bukan karena titik-titiknya. renhanya dapat mengganti teks dengan teks dengan panjang yang sama. Misalnya, jika Anda memiliki file file1.txtdan file2.txt, ren file*.txt blah*.txtlakukan apa yang Anda harapkan (Anda sekarang memiliki file blah1.txtdan blah2.txt). Namun, jika Anda kemudian ketik ren blah*.txt myfile*.txtbom perintah karena itu mengubah nama blah1.txtmenjadi myfile.txt(tidak myfile1.txt) dan kemudian tidak dapat mengganti nama blah2.txtmenjadi myfile.txtkarena file itu sudah ada.
David Richerby
15

Berikut cara menggunakan PowerShell:

Arahkan ke folder Anda dan jalankan perintah ini

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

Versi pendek bonus ekstra:

gci *.jpg | ren -newname {"._" + $_.Name}
Siim K
sumber
6

Saya punya 2 solusi:

  1. Semua file berada di folder yang sama

    • jalankan perintah berikut dari command prompt pada folder itu:

      for /f "delims=¯" %i in ('dir /b /on') do ren "%i" "._%i"
      
  2. solusi lengkap ketika ada file dalam subfolder DAN ketika Anda ingin mengganti "n" karakter pertama dengan string yang Anda inginkan: D

    • buat file batch dengan perintah berikut
    • ubah parameter variabel ke apa yang Anda inginkan
      • path: letakkan di ""dalam jalur root dari file Anda (mis. "C: \ dokumen dan pengaturan \ pengguna \ desktop \ folder baru"
      • numfirstchars2replace: masukkan nomor dengan karakter pertama yang akan diganti (dalam kasus Anda, 2)
      • str2put: letakkan string yang akan ditambahkan sebagai awalan dari nama file baru (dalam kasus Anda, ._)
    • jalankan di folder yang berbeda dari tempat file


@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
kokbira
sumber
teruji sepenuhnya :) itu memecahkan masalah Anda, termasuk dengan beberapa spesifikasi yang Anda berikan dalam komentar @ChrisF. note: dalam "delims = ¯", jika "¯" digunakan dalam nama file, ubah "¯" dengan karakter lain yang kamu tahu yang tidak digunakan dalam nama file
kokbira
memberikan suara karena skrip Anda yang sangat panjang hanya untuk mengulang dan mengganti nama sth. :)
wullxz
baik, adil, saya bisa membuat loop "untuk / f" dengan semua file diurutkan berdasarkan nama dan kemudian mengubah nama mereka menjadi "._lenameX.jpg" dengan X sebagai nomor urut, tapi saya berpikir dengan cara melakukannya untuk kasus lain - jika di masa depan masalah yang sama muncul, seseorang dapat mengubah beberapa perintah ...
kokbira
Anda dapat menggunakan "delims =" bukan "delims = ¯" (Saya lupa itu: D). Anda juga dapat menggunakan for / f intead for / f "delims =" karena ia melakukan apa yang saya inginkan dalam kasus itu ...
kokbira
3

Jika semuanya ada di folder yang sama, Anda dapat memilih semuanya dengan Control+ Alalu tekan F2untuk mengganti nama salah satunya. Semua file selanjutnya akan dinamai file (2), file (3), dll

bruno077
sumber
3

Coba Powershell (sudah diinstal pada Windows 7):

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

(mengujinya di dir-download saya.)

Sunting : Kode Siim K akan menambahkan ".jpg" tambahan untuk setiap "._filename.jpg". Hapus ".jpg" terakhir dalam kode Siim K dan Anda memiliki kode pendek dan elegan untuk mengganti nama file Anda.

wullxz
sumber
terima kasih, diperbarui. Digunakan kembali kode dari perintah ganti nama yang mirip yang membutuhkan manipulasi ekstensi dan tidak memperhatikan.
Siim K
3

Total Commander memiliki alat multi-penggantian nama yang sangat bagus.

György Andrasek
sumber
0

Saya selalu menemukan Flash Renamer menjadi alat yang baik untuk mengganti nama file dalam batch.

Ini memiliki versi percobaan dan lengkap ($ 20) dan dapat mengubah nama file berdasarkan meta data - sangat berguna untuk mengubah nama file MP3 yang saya gunakan untuk apa.

ajcw
sumber
0

Jika Anda mencari cara yang mudah digunakan untuk mengubah nama secara massal, Anda dapat mencoba alat gratis Ant Renamer , ada sejumlah besar tindakan yang dapat Anda ambil dan juga memberikan pratinjau praktis sebelum Anda mengubah nama. Saya sering menggunakannya saat mengacaukan perpustakaan musik, foto, atau video saya.

Chris
sumber