سؤال

لقد قمت بإنشاء ملف دفعي لإخراج محتوى مجلد في قائمة الأسماء.

@echo off
cd /d %1
Title %~f1
dir %1 /b /l > %1\..\file_list.txt

كيف يمكنني إجراء file_list.txt لتكون "dir name" .txt؟

على سبيل المثال، أنا في مجلد ABC وأريد إخراج قائمة Dir بحيث يتم تسمية ملف النص النهائي باسم ABC.TXT بدلا من file_list.txt

تحرير: شكرا alconja، فإنه يعمل تماما. نظرا لأن هذا هو موقع معلومات وتعلم، هل تمانع في توسيع إجابتك لشرح المعلمات التي تضيفها؟

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

المحلول

بناء على المناقشة هنا, أعتقد أن هذا هو ما أنت بعد:

@echo off&setlocal enableextensions
Title %~f1
for %%* in (%1) do set MyDir=%%~n*
dir %1 /b /l > %1\..\"%MyDir%.txt"
endlocal&goto :eof

أعطاها اختبار سريع ويبدو أن تفعل ما تريد

... المقدمة كما هو / لا توجد ضمانات / الخ :)

نصائح أخرى

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

ولكن، إذا كان لديك سيد على جهازك، يصبح سهلا نسبيا:

@echo off
cd /d %1
Title %~f1
for /F "usebackq delims=" %%i in (`"pwd | sed -e ""{s/.*\\//g}"""`) do dir %1 /b /l > %1\..\%%i.txt

تصحيح: إجابة alconja صحيح. على ما يبدو مع ملحقات إلى البرمجة النصية الدفعية، هذا ممكن. (أفهم الآن ~ f كذلك). لذلك، لا تحتاج إلى SED بعد الآن، وهذا يقلل من:

@echo off
cd /d %1
Title %~f1
for /F "usebackq delims=" %%i in (`pwd`) do dir %1 /b /l > %1\..\%%~ni.txt

يمكن القول، نظرا لأنك تغير الدليل، فأنت لا تحتاج إلى٪ 1 في مسار الإخراج أو أمر DIR، ويجب أن تكون قادرا فقط على استبدال٪ 1 للمسار، حتى تتمكن من محاولة (غير مهتم):

@echo off
cd /d %1
Title %~f1
dir /b /l > ..\%~n1.txt
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top