Windows เปลี่ยนชื่อไฟล์ชื่อกลางจำนวนมากผ่าน CLI หรือไม่


13

ไฟล์ต้นฉบับ

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

ผลลัพธ์ที่ต้องการ

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

renไฟล์เดียวสามารถเปลี่ยนชื่อได้อย่างง่ายดายด้วย

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

เป็นไปได้ไหมที่จะเปลี่ยนชื่อเป็นจำนวนมากด้วย Windows renหรือrenameเครื่องมือ


1
อรรถประโยชน์ฟรีที่ดีที่จะทำให้งานนี้เป็นเรื่องง่าย .... bulkrenameutility.co.uk/Main_Intro.php
Moab

ฉันเห็นด้วย. ฉันสามารถตั้งชื่อโซลูชั่นที่ใช้ GUI ได้มากมายและสงสัยว่าทำไมการยืนยันบน CLI
Mawg กล่าวว่าการคืนสถานะโมนิก้า

@Mawg คุณสามารถเขียนสคริปต์ด้วยเครื่องมือ GUI เหล่านั้นได้หรือไม่?
ซาบรีนา

ฉันทำได้ - ใช้ AutoIt - แต่อาจจะแนะนำต่อ :-) ฉันแค่สงสัยว่ามีความต้องการที่ยากสำหรับ CLI และตอนนี้ดูเหมือนว่าจะมี ขอบคุณสำหรับการชี้แจง
Mawg พูดว่าคืนสถานะโมนิก้า

คำตอบ:


13

เป็นไปได้ไหมที่จะเปลี่ยนชื่อเป็นจำนวนมากด้วย Windows ren หรือเปลี่ยนชื่อเครื่องมือ?

ใช่ แต่ต้องใช้ไฟล์แบตช์

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

ตัวอย่าง:

> 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

อ่านเพิ่มเติม


17

PowerShell หนึ่งไลเนอร์นี้จะขยายตัวเลขทั้งหมดในชื่อไฟล์ไปยังสองตำแหน่ง.PadLeft(2,'0'):
(และปล่อยตัวเลขไว้กับที่อื่น ๆ โดยไม่ถูกแตะต้อง)

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

ที่จะอยู่ในหัวข้อห่อในบรรทัด cmd / ไฟล์แบทช์:

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

หากต้องการอยู่ด้านปลอดภัยก่อนที่จะดำเนินการคำสั่งให้ผนวกอย่างใดอย่างหนึ่ง

  • -Confirm ซึ่งถามก่อนที่จะทำการเปลี่ยนชื่อ
  • -WhatIfซึ่งแสดงรายการการเปลี่ยนชื่อทั้งหมดที่จะดำเนินการโดยไม่มีพารามิเตอร์

ต่อหน้าคนสุดท้าย "


3

แก้ไข:ฉันเพิ่งสังเกตเห็นว่าคำถามนี้เกี่ยวกับการเปลี่ยนชื่อจากบรรทัดคำสั่งโดยเฉพาะดังนั้นจึงไม่ตอบคำถามโดยตรง ... ฉันจะเก็บไว้ตอนนี้โดยหวังว่าจะเป็นประโยชน์สำหรับผู้อื่น


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

นี่คือภาพหน้าจอสำหรับสาธิตการใช้งาน:

ตัวอย่างการเปลี่ยนชื่อผู้บัญชาการหลายรวม

เป็นขั้นเป็นตอน:

  1. ดาวน์โหลดและเรียกใช้ Total Commander
  2. ไปที่โฟลเดอร์ที่มีไฟล์ที่จะเปลี่ยนชื่อ
  3. ทำเครื่องหมายไฟล์ที่จะเปลี่ยนชื่อ:
    • ตัวเลือก 1 - Ctrl+ Aสำหรับการทำเครื่องหมายไฟล์ทั้งหมดในโฟลเดอร์
    • ตัวเลือก 2 - ทำเครื่องหมายไฟล์ทีละรายการโดยใช้Spaceปุ่มหรือเมาส์คลิกขวา
    • ตัวเลือกที่ 3 - เปิด "ค้นหาไฟล์" ( Alt+ F7), พิมพ์*.txtใน "ค้นหา" กล่องคลิก "เริ่มการค้นหา" กด "ฟีดกล่องรายการ" แล้วทำเครื่องหมายไฟล์กับ+Ctrl Aใช้เทคนิคนี้หากคุณต้องการเปลี่ยนชื่อไฟล์ในโฟลเดอร์ด้านในด้วย
  4. กดCtrl+ Mเพื่อเปิดเครื่องมือ Multi-Rename
  5. ตั้งค่าที่ต้องการในกล่อง "ค้นหา" และ "แทนที่ด้วย" หากใช้นิพจน์ทั่วไปให้ทำเครื่องหมายในช่อง RegEx
  6. กด "เริ่มต้น!"

-2

ren *.bat *.txtจะทำงานเพื่อเปลี่ยนชื่อส่วนขยายในไฟล์ที่ตรงกันทั้งหมดที่เก็บส่วนอื่น ๆ ของชื่อ คุณไม่สามารถใช้renคำสั่งนี้เพื่อใช้ลำดับคำสั่งในทางที่ผิดหรือไม่?

  • ren "File *" "File 0*"
  • ren "File 00*" "File 0*"
  • (จัดการกับห้อยต่องแต่งเช่น File 022 - Example.txt

1
สิ่งนี้ไม่เป็นประโยชน์คุณตรวจสอบคำสั่งของคุณว่าจะทำอย่างไร? 2-> 0, 22-> 02, 15-> 05
LotPings

ไม่ฉันไม่มี Windows OS จึงไม่ลองเลย แต่ฉันจำได้หลายปีแล้วว่า REN สามารถทำสิ่งนี้ได้ ฉันตั้งใจจะให้ข้อเสนอแนะต่อไป
Douglas จัดขึ้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.