Tambahkan teks ke akhir nama file (tetapi sebelum ekstensi) menggunakan file batch

18

Saya memiliki daftar file yang dalam format di sebelah kiri. Saya ingin menambahkan string ke setiap nama file, tetapi sebelum ekstensi, seperti yang ditunjukkan:

File 1.txt  ->  File 1 version 1.txt
File 2.txt  ->  File 2 version 1.txt
File 3.txt  ->  File 3 version 1.txt
File 4.txt  ->  File 4 version 1.txt
...

Dalam setiap kasus, string yang ditambahkan adalah sama di semua file.

Ini sepertinya tugas yang sangat sederhana, tapi saya mengalami kesulitan memasukkan ini ke dalam file batch.

Saya sudah mencoba renperintah dan mengikuti beberapa contoh di halaman ini , tetapi nama file yang dihasilkan menambahkan string setelah ekstensi:

File 1.txt version 1.txt
Turki
sumber
Info di tautan "halaman ini" SS64 Anda berasal dari T&J SU ini (dengan restu saya): Bagaimana perintah Windows RENAME mengartikan wildcard? Saya mempertahankan jawaban SU (jarang) ketika saya menemukan fitur baru.
dbenham

Jawaban:

6

untuk nama file yang lebih panjang Anda harus menambahkan lagi ?di blok dengan massa?????????

ren *.?* ????????????????????????????????????????????????????????" version 1".*
bummi
sumber
2
Terima kasih telah menjawab begitu cepat! Saya sedikit mengedit perintah, untuk mempertahankan ekstensi file, dan hanya mempengaruhi file txt: ren * .txt ???????????????????????????????? "Versi 1.txt "
TheTurkey
bagaimana jika saya ingin menambahkan sesuatu di awal
Farhana Haque
berapa banyak ? karakter diperlukan?
Kaveesh Kanwal
39

Alih-alih mengandalkan kebiasaan aneh ren , tidak mengapa melakukan ini dengan cara yang tepat?

for %a in (*.txt) do ren "%~a" "%~na version 1%~xa"

Jika Anda ingin menggunakan ini dalam file batch, ingatlah untuk menggandakan setiap tanda%.

Karan
sumber
1
Luar biasa! ini jawaban yang lebih baik setiap hari. +1
Fr0zenFyr
2

Saya ingin menambahkan "_A" ke beberapa file dan ini adalah bagaimana saya melakukannya.

Saya menghapus ekstensi pertama, menambahkan akhiran, lalu mengubah ekstensi kembali ke aslinya. Memang berhasil bagi saya dan menjaga kode batch sederhana, karena saya tidak banyak programmer.

@ECHO OFF

REN *.pdf *.
REN *. *_A.
REN *. *.pdf
Avinash Arunagiri
sumber
2

Untuk orang-orang yang tidak berpengalaman dengan perintah (seperti saya), ada beberapa perangkat lunak yang membuat penggantian nama massal sangat mudah:

  • Utilitas penggantian nama massal (tanpa sumber terbuka)
  • Ganti nama-It! (open source)
MagTun
sumber
1

@ bwDraco solusi bagus tapi bisa dibuat lebih sederhana. Kumpulan file saya semua * .jpg dan saya ingin mengubah nama mereka semua * c.jpg. Anda hanya perlu 2 langkah untuk ini, bukan 3:

ren "{filepath}\*.jpg" *.
ren "{filepath}\*" *c.jpg
Zap Coffey-Brittain
sumber
0

Secara rekursif melalui subfolder

#!/bin/bash
# Warning: globstar excludes hidden directories.
# Turn on recursive globbing (in this script) or exit if the option is not supported:
shopt -s globstar || exit
for f in **
do
if [ -f "$f" ]; then
   extn=${f##*.} # save the extension of the file
   #mv "$f" "${f%.*}"_suffix.${extn};
   mv "$f" "${f%.*} version 1".${extn};
fi
done
Ferroao
sumber