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

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".*

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%.


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

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)

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.