it-swarm.asia

هل هناك طريقة لدفعة إعادة تسمية الملفات إلى أحرف صغيرة؟

أحتاج إلى طريقة لإعادة تسمية جميع الملفات الموجودة في المجلدات والمجلدات الفرعية إلى أحرف صغيرة.

أود معرفة ما إذا كان هناك طريقة للقيام بذلك باستخدام فقط windows (XP أو 7)

62
ino

انتقل إلى الدليل وقم بتشغيل الأمر التالي:

for /f "Tokens=*" %f in ('dir /l/b/a-d') do (rename "%f" "%f")

فيما يلي التفاصيل في حال أراد شخص ما تعديله/تحسينه:

  • for /f - لكل سطر
  • "Tokens=*" - معالجة كل عنصر في كل سطر.
  • %f in (...) - %f هو اسمك المتغير لكل عنصر.
  • dir - يسرد كل ملف ودليل فرعي في دليل.
  • /l - (المعلمة لـ dir) يستخدم أحرف صغيرة.
  • /b - (المعلمة لـ dir) يستخدم التنسيق العاري ، فقط أسماء الملفات/الدليل ، لا حجم ، بلا رؤوس.
  • /a-d - (المعلمة لـ dir) Do لا قائمة الدلائل . (a تعني attribute ، - تعني not و d تعني directory) .
  • rename "%f" "%f"- إعادة تسمية الملف باسمه ، والذي يتم تخفيضه فعليًا بواسطة مجموعة dir ومجموعة /l.
119
loftysnake

spacetornado Renamer هو برنامج Windows يعيد تسمية كميات كبيرة من الملفات على دفعات. يمكنك البحث عن نص واستبداله ، وإزالة عدد معين من الأحرف ، وتغيير الحالة إلى حرف أول أو أعلى أو أول حرف كبير وإضافة نص إلى بداية أو نهاية (إلحاق/تعليق مسبق) لكل اسم ملف

enter image description here

18
joe

منذ Windows 7 ، يمكنك استخدام PowerShell لهذه المهام

Get-ChildItem "C:\path\to\folder" -recurse | 
  Where {-Not $_.PSIsContainer} | 
  Rename-Item -NewName {$_.FullName.ToLower()}

- اختر مجلد الجذر الخاص بك
- تتم إعادة تسمية جميع الملفات الموجودة داخل المجلد الجذر والمجلدات الفرعية
- أسماء المجلدات مستبعدة مع Where {-Not $_.PSIsContainer} |

11
nixda

فيما يلي حل سطر أوامر عودي مناسب باستخدام أوامر cmd.exe الأصلية فقط التي تعمل بالفعل. أعتقد أنه أبسط حل محلي ممكن:

for /r %D in (.) do @for /f "eol=: delims=" %F in ('dir /l/b/a-d "%D"') do @ren "%D\%F" "%F"

إذا كنت على استعداد لتجاوز أوامر cmd.exe الأصلية ، فهناك خيار آخر هو JREN.BAT أداة إعادة تسمية للتعبير المعتاد التي تدعم خيارات تحويل الأسماء إلى أحرف كبيرة أو صغيرة. إنه برنامج نصي خالص (JScript/دُفعة) يتم تشغيله أصليًا على أي جهاز يعمل بنظام Windows من XP فصاعدًا - لا يلزم وجود ملفات exe خارجية. التوثيق الكامل مدمج - يمكن الوصول إليه من سطر الأوامر عبر jren /? ، أو jren /?? إذا كنت تريد الإخراج المقسم إلى صفحات.

مع JREN ، الحل العودية بسيط مثل:

jren "^" "" /s /l
6
dbenham

الأداة المساعدة لإعادة تسمية الملفات الدفعية المفضلة هي Cylog's WildRename . من بين العديد من الميزات الأخرى ، يمكنه تغيير حالة أسماء الملفات. أفضل شيء عن WildRename هو أنه يدعم التعبيرات المنتظمة!

6
Synetech

إصدار "تكراري" للإجابة المقبولة (التي تعمل *)

for /f "Tokens=*" %f in ('cmd /c "echo %cd%& dir /l/b/ad/s"') do (for /f "Tokens=*" %g in ('dir /l/b/a-d "%f"') do (rename "%f"\"%g" "%g"))


الحلقة الأولى

for /f "Tokens=*" %f in ('cmd /c "echo %cd%& dir /l/b/ad/s"')

الحصول على قائمة المسارات المطلقة لجميع الأدلة داخل التيار (بما في ذلك):

C:\فو>

  • C:\فو \TO.txt

  • C:\فو\بار \LOWER.txt

  • C:\فو\بار\باز \CASE.txt


الحلقة الثانية

for /f "Tokens=*" %g in ('dir /l/b/a-d "%f"') do (rename "%f"\"%g" "%g")

الحصول على قائمة بجميع أسماء الملفات (أو أسماء الملفات و الدليل إذا قمت بإخراج رمز التبديل /a-d) داخل كل من المسارات المطلقة التي عثر عليها في الحلقة الأولى ، وتحول اسم هذه ملفات صغيرة.

  • C:\فو\ TO.txt

  • C:\فو\بار\ LOWER.txt

  • C:\فو\بار\باز\ CASE.txt


* يحتاج إلى حلقتين لأن الوسيطة الثانية إلى rename يجب أن تكون اسم ملف وليس مسار مطلق (كما حصل عليه بواسطة رمز التبديل /s).

5
wc.matteo

يمكنك استخدام استراتيجية "استبدال الحرف" ...

set Name=%Name:A=a%
set Name=%Name:B=b%
set Name=%Name:C=c%

... وهكذا ، للرسائل A-Z. ربما يمكنك تنفيذه في شكل حلقة FOR.

3
DednDave

http://www.dostips.com/DtCodeCmdLib.php#Function.toLower يوفر وظيفة بسيطة يجب أن تكون قادراً على تضمينها والاتصال بها من ملف دفعي.

لذا ، قم بتكرار الملف الدفعي على المجلدات/أسماء الملفات ، واستدعي هذه الوظيفة لإنشاء إصدار صغير من الاسم.

1
Kevin Haines

أفضل برنامج للقيام بذلك في Windows هو أداة إعادة تسمية جملة . إنها أداة مان. يمكنك حتى استخدام regex لإعادة تسمية الملفات و/أو المجلدات. يحتوي أيضًا على تكامل Shell (حتى تتمكن من التنفيذ من Explorer بالنقر بزر الماوس الأيمن) وهو أمر لطيف للغاية. تتوفر إصدارات 64 بت و 32 بت.

1
ubiquibacon

الإجابة المقبولة على هذا السؤال ، عن طريق loftysnake ، تعمل للتيار الدليل ولكن لا يبحث في المجلدات الفرعية. اقترح Sawnyتعديل بسيط لإجابة loftysnake لجعله متكررًا ، ولكن لا يعمل ذلك ، لأنه بينما يسمح لك الأمر rename بتحديد محرك أقراص ومسار باستخدام filename1 (مصدر) ، يجب أن يكون filename2 (اسم المصطلح) مجرد اسم ملف. لاقتباس رسالة المساعدة (/?) ،

... لا يمكنك تحديد محرك أقراص جديد أو مسار لملف الوجهة الخاص بك.

لكن move يعمل حيث لا يعمل rename ، لذلك يمكنك إعادة تسمية الملفات بشكل متكرر إلى أحرف صغيرة باستخدام هذا الأمر:

for /f "Tokens=*" %f in ('dir /l/b/a-d/s') do (move /y "%f" "%f")

لأنه اتضح أن Move يمكنه التعامل مع مسارات الدليل.

يعمل الأمر أعلاه عند كتابته مباشرةً في موجه الأوامر (CMD.EXE). إذا كنت تريد القيام بذلك من داخل ملف دفعي (.BAT) ، فيجب عليك مضاعفة الأحرف %:

for /f "Tokens=*" %%f in ('dir /l/b/a-d/s') do (move /y "%%f" "%%f")

وربما يمكنك ترك الأقواس والرمز /y وقول do move … فقط.

1
Adrian

من http://windowsitpro.com/articles/index.cfm؟articleid=81612 :

باستخدام الأوامر القياسية فقط ، قمت بكتابة السيناريو LwrCase.bat و LwrCase_Folder.bat ، لإعادة تسمية اسم الملف إلى الحالة الصغيرة ، أو إعادة تسمية جميع أسماء الملفات في مجلد إلى حالة صغيرة.

لإعادة تسمية اسم الملف إلى الحالة الصغيرة ، استخدم:

[call] LwrCase FullyQualifiedFileName

حيث FullyQualifiedFileName هو اسم الملف المؤهل بالكامل لإعادة تسميته.

لإعادة تسمية جميع أسماء الملفات في الدليل ، استخدم:

[call] LwrCase_Folder FullyQualifiedDirectoryName [/S]

حيث FullyQualifiedDirectoryName هو مسار المجلد المؤهل بالكامل ، و/S هي معلمة اختيارية ستعيد أيضًا تسمية أسماء الملفات في جميع المجلدات الفرعية.

ملاحظة: LwrCase.bat يجعل استخدام رمز التبديل/L للأمر DIR ، والتي تُرجع أسماء الأحرف الصغيرة.

يحتوي LwrCase.bat على:

@echo off
if {%1}=={} @echo Syntax: LwrCase FullyQualifiedFileName&goto :EOF
if not exist %1 @echo LwrCase - %1 NOT found.&goto :EOF
setlocal
for /f "Tokens=*" %%a in ('@echo %~a1') do (
 set file=%%a
)
if /i "%file:~0,1%" EQU "d" @echo LwrCase - %1 is NOT a file.&endlocal&goto :EOF
for /f "Tokens=*" %%f in ('dir %1 /L /b /a /a-d') do (
 Rename %1 "%%f"
)
endlocal

يحتوي LwrCase_Folder.bat على:

@echo off
if {%1}=={} @echo Syntax: LwrCase_Folder FullyQualifiedDirectoryName&goto :EOF
if not exist %1 @echo LwrCase_Folder - %1 NOT found.&goto :EOF
setlocal
for /f "Tokens=*" %%a in ('@echo %~a1') do (
 set folder=%%a
)
if /i "%folder:~0,1%" NEQ "d" @echo LwrCase_Folder - %1 is NOT a folder.&endlocal&goto :EOF
pushd %1
set sw=/B /A /A-D
if /i {%2}=={/S} set sw=%sw% %2
for /f "Tokens=*" %%f in ('dir %sw%') do (
 call LwrCase "%%f"
)
popd
endlocal
1
Even Mien

بوويرشيل

انتقل إلى دير وتشغيل:

dir | Rename-Item -NewName { $_.Name.ToLowerInvariant() }

لقد تحقق من أن هذا يعمل. وجدت هنا: http://www.hanselman.com/blog/PennyPinchingVideoMovingMyWebsitesImagesToTheAzureCDNAndUsingACustomDomain.aspx

0
JP Hellemons

حل العودية. ضع هذا في ملف recursiverename.cmd ..

for /f "Tokens=*" %%f in ('dir /l/b/a-d') do (rename "%%f" "%%f")
for /r /d %%x in (*) do (
    pushd "%%x"
    for /f "Tokens=*" %%f in ('dir /l/b/a-d') do (rename "%%f" "%%f")
    popd
)
0
Mick