سؤال

يمكننا أن نرى في دليل الملفات التي أمر بها اسم في مستكشف Windows.

إذا حاولت نفس الشيء في ويندوز موجه الأوامر أنها أوامر من قبل اسم مختلف - صحيح:

dir *.jpg /ON /B

cubierta.jpg
pag00.jpg
pag06.jpg
pag08.jpg
pag09.jpg
pag100.jpg
pag101.jpg
pag102.jpg
pag103.jpg
pag104.jpg
pag105.jpg
pag106.jpg
pag107.jpg
pag108.jpg
pag109.jpg
pag11.jpg, etc, etc, etc, ...

هل هناك طريقة للحصول على dir الترتيب حسب الاسم حيث يقرأ الأرقام الإنسان أن أفعل ؟

هل كانت مفيدة؟

المحلول

والخيار الأفضل (إن أمكن) لإضافة الأصفار الرائدة بما فيه الكفاية (اثنان، في هذه الحالة) إلى عدد أقل بحيث لا يأتي هذا النوع كما هو متوقع.

نصائح أخرى

ويندوز إكسبلورر يستخدم دالة الفرز الخاصة، StrCmpLogicalW ، التي لا يستخدم من قبل CMD.EXE ، وبالتالي فإن الاختلافات في الإخراج. هل يمكن كتابة برنامج الفرز الخاصة به، على الرغم من.

وكنت قد تكون مهتمة ايضا في مقالات مايكل كابلان على rel="nofollow هذا الموضوع (ومن ريمون تشن <لأ href = "HTTP: // blogs.msdn.com/oldnewthing/archive/2008/09/11/8942473.aspx "يختلط =" نوفولو noreferrer "> صندوق الاقتراحات ).

انه هو.هل تريد أن تعرف الحل ؟

أنا باستخدام برنامج يسمى ImageMagic أن يحول بلدي 200MB ملفات PDF إلى JPG.في نهاية عملية طويلة كان يسلسل كل الملفات في الترتيب العددي...وذلك أساسا تاريخ إنشاء ملف الزيادات في القيمة قليلا حيث أن كل ملف يتم كتابتها إلى القرص الصلب.وبالتالي إما التاليين ملف دفعي الأوامر كتابة الملفات في 'الصحيح' النظام:

dir *.jpg /ODN /B > files.txt

for /f "tokens=*" %%a in ('dir *.jpg /ODN /B') do (
    echo ^<page^>%%a^</page^> >>pages.xml.fragment
)

وهكذا dir *.jpg /OD أوامر القيادة الدليل المحتوى عن طريق تصاعدي (الخلق؟) تاريخ و يمكننا تجاهل تماما اسم الملف الفعلي.

وحاليا لا يوجد المدمج في أدوات سطر الأوامر التي يمكن الفرز بشكل طبيعي. إذا كنت تريد إرضاء صوت ميزة لجعل مايكروسوفت تغير رأيها

ولكن هذا يمكن محاكاة مع استبدال رجإكس. على ويندوز يمكنك استخدام JScript و VBS للقيام بذلك. ولكن أسهل طريقة يستخدم بوويرشيل. يمكنك تسميتها من CMD.EXE مثل هذا

powershell -Command "(Get-ChildItem | Sort-Object { [regex]::Replace($_.Name, '\d+', { $args[0].Value.PadLeft(20) }) }).Name"

وبالطبع ستحتاج إلى تغيير الرقم في PadLeft(20) كان حجم الملفات تحتوي على سلسلة طويلة من الأرقام

كيفية ترتيب النتائج بحسب اسم الملف بنفس الطريقة مستكشف Windows يفعل؟

ويمكن العثور على حل دفعة الأصلي في بطبيعة الحال ترتيب الملفات دفعة واحدة إذا كانت الملفات فقط رقم واحد في نهاية

@echo off
setlocal enabledelayedexpansion
for %%a in (*.txt) do (
    set num=00000000000000000000%%a
    set num=!num:~-20!
    set $!num!=%%a
)
for /f "tokens=1,* delims==" %%a in ('set $0') do echo %%b

و4NT / TCC / TC من JPSoft استخدام ترتيب الطبيعي بشكل افتراضي؛ بالتناوب، إذا كان لديك الوصول إلى برنامج GNU "النوع"، مثل أدوات سيغوين ، يمكنك أن تفعل شيئا من هذا القبيل " ليرة سورية -1 | / بن / نوع -g "أو" دير / ب | \ سيغوين \ بن \ نوع -g ". من شأنها أن تعطيك أسماء في ترتيب الطبيعي.

إذا كنت مقيدة إلى الأدوات التي تعود أصولها إلى النوافذ، يمكنك أن تجرب في أدوات برمجة ويندوز و تفعل شيئا مثل استخدام FileSystemObject للحصول على أسماء، والتعابير العادية لاستخراج الجزء رقمية من أسماء لاستخدام المفاتيح في كائن القاموس. سأترك الترميز الفعلي باعتبارها ممارسة للقارئ:)

لا، وليس هناك طريقة للقيام بذلك. يستخدم مستكشف Windows مقاربة مختلفة للتعامل مع هذا.

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