เพิ่มข้อความที่ส่วนท้ายของชื่อไฟล์ (แต่ก่อนนามสกุล) โดยใช้ไฟล์แบตช์


18

ฉันมีรายการไฟล์ที่อยู่ในรูปแบบด้านซ้าย ฉันต้องการผนวกสตริงไปยังชื่อไฟล์แต่ละชื่อ แต่ก่อนที่จะขยายดังที่แสดง:

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

ในแต่ละกรณีสตริงที่ผนวกจะเหมือนกันในไฟล์ทั้งหมด

ดูเหมือนว่าจะเป็นงานง่าย ๆ แต่ฉันมีปัญหาในการใส่ลงในไฟล์แบทช์

ฉันได้ลองใช้renคำสั่งและติดตามตัวอย่างในหน้านี้แล้ว แต่ชื่อไฟล์ที่เป็นผลลัพธ์จะต่อท้ายสตริงหลังนามสกุล:

File 1.txt version 1.txt

ข้อมูลที่ลิงค์ SS64 "หน้านี้" ของคุณมาจากคำถามคำตอบ SU นี้ (ด้วยพรของฉัน): คำสั่ง Windows RENAME ตีความสัญลักษณ์แทนได้อย่างไร ฉันคงคำตอบ SU (นาน ๆ ครั้ง) ขณะที่ฉันค้นพบคุณสมบัติใหม่
dbenham

คำตอบ:


6

สำหรับชื่อไฟล์ที่ยาวขึ้นคุณจะต้องเพิ่มบางอย่าง?ในบล็อกด้วยมวลของ?????????

ren *.?* ????????????????????????????????????????????????????????" version 1".*

2
ขอบคุณสำหรับการตอบรับทันที! ฉันแก้ไขคำสั่งเล็กน้อยเพื่อรักษานามสกุลไฟล์และจะมีผลกับไฟล์ txt เท่านั้น: ren * .txt ?????????????????????????? "เวอร์ชัน 1.txt "
TheTurkey

จะเป็นอย่างไรถ้าฉันต้องการผนวกบางอย่างในตอนเริ่มต้น
Farhana Haque

เท่าไหร่ ? จำเป็นต้องมีตัวอักษรหรือไม่
Kaveesh Kanwal

39

แทนที่จะอาศัยRenนิสัยใจคอที่ไม่มีเอกสาร 's ทำไมไม่ทำเช่นนี้วิธีการที่เหมาะสม?

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

หากคุณต้องการใช้สิ่งนี้ในไฟล์แบตช์อย่าลืมทำการเพิ่มเครื่องหมาย%


1
ยอดเยี่ยม นี่เป็นคำตอบที่ดีกว่าทุกวัน +1
Fr0zenFyr

2

ฉันต้องการเพิ่ม "_A" ลงในหลายไฟล์และนี่คือวิธีที่ฉันทำ

ฉันลบนามสกุลออกก่อนเพิ่มคำต่อท้ายจากนั้นเปลี่ยนนามสกุลกลับเป็นต้นฉบับ มันทำงานได้ดีสำหรับฉันและเก็บรหัสชุดไว้อย่างง่าย ๆ เพราะฉันไม่ได้เป็นโปรแกรมเมอร์มากนัก

@ECHO OFF

REN *.pdf *.
REN *. *_A.
REN *. *.pdf

2

สำหรับผู้ที่ไม่มีประสบการณ์ในการใช้คำสั่ง (อย่างฉัน) มีซอฟต์แวร์ที่ทำให้การเปลี่ยนชื่อเป็นกลุ่มง่ายมาก:

  • ยูทิลิตี้การเปลี่ยนชื่อจำนวนมาก (ไม่มีโอเพนซอร์ส)
  • เปลี่ยนชื่อ-It! (โอเพ่นซอร์ส)

1

@ ทางออกของ bwDraco นั้นดี แต่มันก็ง่ายกว่านี้ ชุดไฟล์ของฉันทั้งหมด * .jpg และฉันต้องการเปลี่ยนชื่อพวกเขาทั้งหมด * c.jpg คุณต้องการเพียง 2 ขั้นตอนเท่านั้นไม่ใช่ 3:

ren "{filepath}\*.jpg" *.
ren "{filepath}\*" *c.jpg

0

วนซ้ำผ่านโฟลเดอร์ย่อย

#!/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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.