دفعة:كيف يمكنك إعادة تسمية الملفات بالجملة (الاقتراب)?

StackOverflow https://stackoverflow.com/questions/8970300

سؤال

رأيت الناس يفعلون ذلك في بيرل, ولكن أنا أتساءل عما إذا كان هناك طريقة للقيام بذلك عن طريق دفعة?انها بنيت في ويندوز ، لذلك أعتقد أنه سيكون أكثر فائدة لمعرفة كيفية القيام بذلك مع النصي دفعة.لا يتطلب تثبيت أي شيء على جهاز الكمبيوتر.

مثال على اسم الإدخال: myFile_55 مثال على نمط الإخراج:التغيير myFile إلى picture وتقليل العدد بنسبة 13.مثال على الإخراج: picture_42.

كيف تقترب من هذا?أنا أعرف أمر دفعة لإعادة تسمية:

ren myFile_55 picture_42.

لذلك ، إذا كان لدي ملف اسمه renamer.bat, ، يمكنني إضافة ما يلي:

for /r %%x in (%1) do ren "%%x" %2.

ثم يمكنني كتابة هذا الأمر:

renamer.bat myfile* picture*.

أنا لا أعرف كيفية تقليل الأرقام ، على الرغم من.

لا يوجد حل صحيح

نصائح أخرى

ربما يمكنك وضع اسم الملف الأصلي من خلال حلقة ، واستخراج الاسم والأرقام ، والقيام الرياضيات على الأرقام ، ثم توصيله مرة أخرى مع الاسم الجديد والرقم.طالما أن تنسيق اسم الملف هو name_number يمكنك استخدام هذا:

REM Allow for numbers to be iterated within the for-loop i.e. the i - z
SETLOCAL ENABLEDELAYEDEXPANSION
SET i=0
SET z=13
SET newName=picture
SET workDir=C:\Path\To\Files

REM Given that filenames are in the format of 'Name_number', we're going to extract 'number
REM and set it to the i variables, then subtract it by 13, then rename the original file
REM to what the newName_x which if the filename was oldName_23 it would now be newName_10
FOR /r %%X in (%1) do (
  FOR /F "tokens=1-2 delims=_" %%A IN ("%%X") DO (
    SET i=%%B
    SET /A x=!i! - %z%

    REM ~dpX refers to the drive and path of the file
    REN "%%~dpX\%%A_%%B" "%newName%_!x!"
  )
)

تحرير:تحرير REN الأمر لتشمل محرك الأقراص ومسار الملف الأصلي.تم تغييره من الأحرف الصغيرة س إلى الأحرف الكبيرة س لعدم الخلط %%~dpX.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top