พรอมต์คำสั่งของ Windows XP เปลี่ยนชื่อคำสั่งสำหรับงานนี้หรือไม่


1

พรอมต์คำสั่งของ Windows XP เปลี่ยนชื่อคำสั่งสำหรับงานนี้หรือไม่

เปลี่ยนชื่อ ...

file.mp3.0001.mp3  
file.mp3.0002.mp3  
file.mp3.0003.mp3  
file.mp3.0004.mp3  

ไปยัง

afile.mp3.0001.mp3  
afile.mp3.0002.mp3  
afile.mp3.0003.mp3  
afile.mp3.0004.mp3  

แล้ว

afile.mp3.0001.mp3  
afile.mp3.0002.mp3  
afile.mp3.0003.mp3  
afile.mp3.0004.mp3  

ไปยัง

bbfile.mp3.0001.mp3  
bbfile.mp3.0002.mp3  
bbfile.mp3.0003.mp3  
bbfile.mp3.0004.mp3  

แล้ว

afile.mp3.0001.mp3  
afile.mp3.0002.mp3  
afile.mp3.0003.mp3  
afile.mp3.0004.mp3  

ไปยัง

b.bfile.mp3.0001.mp3  
b.bfile.mp3.0002.mp3  
b.bfile.mp3.0003.mp3  
b.bfile.mp3.0004.mp3  

ฉันจะทำสิ่งนี้ได้อย่างไร


คุณหมายถึง: file.mp3.XXXX.mp3 -> afile.mp3.XXXX.mp3 -> bbfile.mp3.XXXX.mp3 -> b.bfile.mp3.XXXX.mp3? ถ้า "ใช่" คุณสะกดคำว่า "จาก" ของขั้นตอนสุดท้ายนั่นไม่ใช่ "afile" แต่ "bbfile" ...
kokbira

ทำไมคุณต้องการที่จะทำใน 3 ขั้นตอน? ทำไมคุณไม่ต้องการที่จะทำจาก "file.mp3.XXXX.mp3" ถึง "b.bfile.mp3.XXXX.mp3"?
kokbira

ขอโทษฉันพลาดที่จะทราบคำตอบนี้ @kokbira ฉันเพียงแค่ต้องการที่จะทำใน 3 คำสั่งดอสถ้า thats เป็นไปได้
พระศิวะ

คำตอบ:


4

เพียงแค่คำสั่งคอนโซลเพื่อเปลี่ยนชื่อจาก "* .mp3" เป็น "bb * .mp3" - มันทำหน้าที่:

for /f "delims=" %i in ('dir /b /on /a-d *.mp3') do ren "%i%" "b.b%i"

แต่ถ้าคุณต้องการในขั้นตอนมันจะยากขึ้นเช่นวิธีของฉันในวิธีการเปลี่ยนชื่อไฟล์ 80.000 ครั้งใน Windows - ฉันแก้ไขมันตามความต้องการของคุณ :) วิธีทดสอบอย่างเต็มที่และค้นหาในโฟลเดอร์ย่อยด้วย:

  • สร้างไฟล์แบตช์ด้วยคำสั่งดังต่อไปนี้
  • เปลี่ยนพารามิเตอร์ตัวแปรเป็นสิ่งที่คุณต้องการ
    • พา ธ : ใส่ข้างในรูทพา ธ ของไฟล์ของคุณ (เช่น "C: \ documents และ settings \ user \ desktop \ new folder"
    • numfirstchars2replaceX: ใส่ตัวเลขด้วยอักขระแรกเพื่อแทนที่สำหรับขั้นตอน eaxh X (ในกรณีของคุณ numfirstchars2replace1 = 0, numfirstchars2replace2 = 1, numfirstchars2replace1 = 1)
    • str2putX: ใส่สตริงที่จะเพิ่มเป็นคำนำหน้าของชื่อไฟล์ใหม่สำหรับแต่ละ X ขั้นตอน (ในกรณีของคุณ, str2put1 = a, str2put2 = bb, str2put3 = b.)
  • เรียกใช้ในโฟลเดอร์ที่แตกต่างจากที่เป็นไฟล์


@echo off

::only to tell user what this bat are doing
echo.1.initializing...

::enable that thing to allow, for example, incremental counter in a for loop :)
echo.- EnableDelayedExpansion
SETLOCAL EnableDelayedExpansion

::variables
echo.- variables
:: - place here the absolute root path of your files
set path="put here absolute path where are the root folder of your files"
set pathbak=%cd%
set numfirstchars2replace1=0
set numfirstchars2replace2=1
set numfirstchars2replace3=1
set str2put1=a
set str2put2=bb
set str2put3=b.

::go to %path% and its driveletter
echo.- entering the path you want
for /f "delims=" %%i in ('echo.%path%') do %%~di
cd %path%

::search all subfolders and save them to a temp file
echo.- searching for subfolders
echo.%path%>%temp%\tmpvar.txt
for /f "delims=" %%i in ('dir /s /b /on /ad') do echo."%%i">>%temp%\tmpvar.txt

::execute command for root folder and all found subfolders
echo.
echo.2.executing...

echo.- step 1
for /f "delims=" %%i in (%temp%\tmpvar.txt) do (
  cd %%i
  echo.- in folder: %%i
  for /f "delims=" %%j in ('dir /b /on /a-d *.mp3') do (
    set newname=%%j
    set newname=!newname:~%numfirstchars2replace1%,1000!
    echo.- renaming from "%%j" to "%str2put1%!newname!"...
    ren "%%j" "%str2put1%!newname!"
  )
)

echo.- step 2
for /f "delims=" %%i in (%temp%\tmpvar.txt) do (
  cd %%i
  echo.- in folder: %%i
  for /f "delims=" %%j in ('dir /b /on /a-d *.mp3') do (
    set newname=%%j
    set newname=!newname:~%numfirstchars2replace2%,1000!
    echo.- renaming from "%%j" to "%str2put2%!newname!"...
    ren "%%j" "%str2put2%!newname!"
  )
)

echo.- step 3
for /f "delims=" %%i in (%temp%\tmpvar.txt) do (
  cd %%i
  echo.- in folder: %%i
  for /f "delims=" %%j in ('dir /b /on /a-d *.mp3') do (
    set newname=%%j
    set newname=!newname:~%numfirstchars2replace3%,1000!
    echo.- renaming from "%%j" to "%str2put3%!newname!"...
    ren "%%j" "%str2put3%!newname!"
  )
)

echo.
echo.3.exiting...
::return to %pathbak% and its driveletter
for /f "delims=" %%i in ('echo.%pathbak%') do %%~di
cd %pathbak%

@echo on

คำตอบการทดสอบอย่างเต็มที่ :)
kokbira

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

ใช่! แต่คุณต้องรู้ว่าเมื่อคุณเรียกคำสั่งบางคำสั่งก) คอนโซลคำสั่งจะไม่รอให้คำสั่งเสร็จสิ้นหรือ b) พวกเขาเพียงเรียกใช้คำสั่งอื่นที่จะดำเนินการแยกต่างหาก เพื่อหลีกเลี่ยงก) ใช้ "start / wait" เพื่อหลีกเลี่ยงการ b) ลองใช้คำสั่งดีเลย์ (ทำซ้ำ "ping -n 11 localhost> nul" บางครั้งหรือ "timeout" หรือ "choice" สำหรับ Windows 7) หลังจากรายการของคุณ ... (แหล่งที่มาสำหรับคำสั่งหน่วงเวลา: superuser com / คำถาม / 66975 / … )
kokbira

0

ฉันไม่ทราบวิธีการใด ๆ ในการทำสิ่งนี้ผ่าน PowerShell หรือIrfanViewแม้ว่าการสร้างขึ้นสำหรับรูปภาพจะทำการเปลี่ยนชื่อเป็นชุด อาจเป็นไปได้ที่สคริปต์นี้ แต่ฉันไม่แน่ใจ 100%

ภาพหน้าจอ


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

Irfanview เป็นทางออกที่ดีสำหรับไฟล์ใด ๆ หนึ่งในไฟล์รูปภาพที่ดีที่สุด :) คุณไม่ต้องติดตั้งเพื่อใช้งานเนื่องจากคุณสามารถดาวน์โหลดแพ็คเกจ ZIP จากหน้าแรกของ Irfanview หรือใช้ชุดติดตั้งแบบพกพาหรือชุดพกพาเช่น LiberKey กับแอพ Irfanview ติดตั้งบน pendrive ของคุณ - ไม่จำเป็นต้องมีสิทธิ์ผู้ดูแลระบบ
kokbira

ขอบคุณฉันไม่ได้รับอนุญาตให้ติดตั้งซอฟต์แวร์ใด ๆ ในเครือข่ายองค์กรของ บริษัท ของฉัน ... ฉันรู้ว่าคุณกำลังคิดอะไรอยู่ แต่เรากำลังดิ้นรนกับปัญหานี้
Siva

อาชา ฉันคิดเกี่ยวกับการใช้งานที่ตั้งแต่คุณได้รับอนุญาต :)
kokbira

0

คุณอาจจะต้องมีการเปลี่ยนชื่อยูทิลิตี้ที่สูงขึ้นเช่นเปลี่ยนชื่อ


คำสั่งแต่ละคำสั่งสำหรับแต่ละขั้นตอนทำได้ดี .. คุณสามารถให้ลิงค์สำหรับ The Rename ได้หรือไม่?
พระอิศวร

herve-thouzard.com/the-rename - หน้าเป็นภาษาฝรั่งเศส แต่ยูทิลิตี้ทำงานเป็นภาษาอังกฤษ
LawrenceC
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.