Windows bulk mengubah nama nama tengah melalui CLI?

13

File Asli

File 15 - Example.txt
File 2 - Example.txt
File 22 - Example.txt
File 3 - Example.txt
File 4 - Example.txt
File 5 - Example.txt

Output yang Diinginkan

File 15 - Example.txt
File 02 - Example.txt
File 22 - Example.txt
File 03 - Example.txt
File 04 - Example.txt
File 05 - Example.txt

File tunggal dapat diubah namanya dengan mudah ren.

ren "File 2 - Example.txt" "File 02 - Example.txt"

Apakah mungkin untuk mengubah nama secara massal dengan Windows renatau renamealat?

Sabrina
sumber
1
Utilitas Gratis yang bagus untuk membuat jenis tugas ini mudah .... bulkrenameutility.co.uk/Main_Intro.php
Moab
Saya setuju. Saya dapat menyebutkan banyak solusi berbasis GUI untuk ini, dan bertanya-tanya mengapa desakan pada CLI
Mawg mengatakan mengembalikan Monica
@ Mawg, bisakah kamu membuat skrip dengan alat GUI itu?
Sabrina
Saya bisa - menggunakan AutoIt - tetapi mungkin akan merekomendasikan menentangnya :-) Saya hanya ingin tahu apakah ada persyaratan sulit untuk CLI, dan sekarang sepertinya ada. Terima kasih telah mengklarifikasi
Mawg mengatakan mengembalikan Monica

Jawaban:

13

Apakah mungkin untuk mengubah nama secara massal dengan Windows ren atau mengganti nama alat?

Ya, tetapi membutuhkan file batch.

test.cmd:

@echo off
setlocal EnableDelayedExpansion
for /f "tokens=1,2,3,4" %%i in ('dir /b *Example.txt') do (
  rem pad 2nd token with leading zero
  set _num=0%%j
  set _num=!_num:~-2!
  ren "%%i %%j %%k %%l" "%%i !_num! %%k %%l"
  )
endlocal

contoh:

> dir *Example.txt
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\test

03/01/2019  11:30                 0 File 15 - Example.txt
03/01/2019  11:30                 0 File 2 - Example.txt
03/01/2019  11:30                 0 File 22 - Example.txt
03/01/2019  11:30                 0 File 3 - Example.txt
03/01/2019  11:30                 0 File 4 - Example.txt
03/01/2019  11:30                 0 File 5 - Example.txt
               6 File(s)              0 bytes
               0 Dir(s)  1,075,134,230,528 bytes free

> ..\test

> dir
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\test

03/01/2019  11:54    <DIR>          .
03/01/2019  11:54    <DIR>          ..
03/01/2019  11:30                 0 File 02 - Example.txt
03/01/2019  11:30                 0 File 03 - Example.txt
03/01/2019  11:30                 0 File 04 - Example.txt
03/01/2019  11:30                 0 File 05 - Example.txt
03/01/2019  11:30                 0 File 15 - Example.txt
03/01/2019  11:30                 0 File 22 - Example.txt
               6 File(s)              0 bytes
               2 Dir(s)  1,075,134,230,528 bytes free

Bacaan lebih lanjut

DavidPostill
sumber
17

PowerShell one liner ini akan memperluas semua angka dalam nama file ke dua tempat .PadLeft(2,'0'):
(dan meninggalkan nomor dengan lebih banyak tempat yang tidak tersentuh)

Get-ChildItem *[0-9]*.txt|Rename-Item -NewName {([regex]::Replace($_.BaseName,'\d+',{$args[0].Value.PadLeft(2,'0')}))+$_.Extension}

untuk menjadi topik, dibungkus dengan file baris / batch cmd:

Powershell -Nop -C "Get-ChildItem *[0-9]*.txt|Rename-Item -NewName {([regex]::Replace($_.BaseName,'\d+',{$args[0].Value.PadLeft(2,'0')}))+$_.Extension}"

Untuk berada di sisi aman sebelum menjalankan perintah, tambahkan salah satunya

  • -Confirm yang bertanya sebelum melakukan penggantian nama
  • -WhatIfyang mencantumkan semua nama yang akan dijalankan tanpa parameter

tepat di depan yang terakhir "

Lotings
sumber
3

Sunting: Saya baru saja memperhatikan pertanyaan ini secara khusus tentang penggantian nama dari baris perintah, jadi itu tidak menjawab pertanyaan secara langsung ... Saya akan menyimpannya untuk saat ini, berharap itu akan bermanfaat bagi orang lain.


The Total Commander file manager memiliki alat massal mengubah nama baik. Ini mencakup banyak fitur, termasuk mengubah nama pratinjau, masker ganti nama yang berbeda, ekspresi reguler, mengganti nama file di seluruh hierarki folder, dan banyak lagi. Pada saat yang sama, sangat mudah digunakan.

Berikut screenshot untuk menunjukkan penggunaannya:

Total Commander Multi Rename Contoh

Selangkah demi selangkah:

  1. Unduh dan jalankan Total Commander.
  2. Nativate ke folder dengan file untuk diganti namanya.
  3. Tandai file yang akan diganti namanya:
    • Opsi 1 - Ctrl+ Auntuk menandai semua file dalam folder.
    • Opsi 2 - Tandai file satu per satu, menggunakan Spacetombol atau klik kanan mouse.
    • Opsi 3 - Buka "Cari File" ( Alt+ F7), ketik *.txtkotak "Cari", klik "Mulai Pencarian", tekan "Feed to listbox", lalu tandai file dengan Ctrl+ A. Gunakan teknik ini jika Anda ingin mengganti nama file juga di folder dalam.
  4. Tekan Ctrl+ Muntuk membuka alat Multi-Ubah Nama.
  5. Tetapkan nilai yang diinginkan dalam kotak "Cari" dan "Ganti dengan". Jika menggunakan ekspresi reguler, centang kotak RegEx.
  6. Tekan "Mulai!".
valiano
sumber
-2

ren *.bat *.txtakan bekerja untuk mengganti nama ekstensi pada semua file yang cocok dengan mempertahankan bagian nama yang lain. Bisakah Anda tidak menyalahgunakan ini untuk menjalankan urutan renperintah?

  • ren "File *" "File 0*"
  • ren "File 00*" "File 0*"
  • (berurusan dengan sisa menggantung seperti File 022 - Example.txt
Douglas Diadakan
sumber
1
Ini TIDAK membantu, apakah Anda memeriksa apa yang akan dilakukan perintah Anda? 2-> 0, 22-> 02, 15-> 05.
Lotings
Tidak, saya tidak punya OS Windows jadi jangan mencobanya. Tetapi saya telah mengingat selama bertahun-tahun bahwa REN dapat melakukan ini. Saya bermaksud memberikan saran.
Douglas Diadakan