windows - ويندوز دفعة النصي*(نجمة) قراءة كنص؟



csv batch-file (1)

أكتب نصا برمجيا لتحويل ملف نص ثابت العرض إلى تنسيق بتنسيق كسف. إليك ما كتبته حتى الآن:

@echo off
setlocal enabledelayedexpansion


    for /F "tokens=*" %%A in (HRV*.txt) do (
    set var=%%A
    set mer=!var:~6,11!
    set cr=!var:~18,19!

    set dt=!var:~42,30!
    set aa=!var:~72,30!
    set ab=!var:~102,30!
    set ac=!var:~132,15!

    set ad=!var:~147,30!
    set ae=!var:~177,30!

    set af=!var:~283,36!

    set ag=!var:~318,3!
    set ah=!var:~329,7!
    set ai=!var:~337,17!
    set aj=!var:~442,2!
    set ak=!var:~460,15!
    set al=!var:~475,2!
    set am=!var:~482,15!

    set y=!mer!.!cr!,"!dt!","!aa!","!ab!","!ac!","!ad!","!ae!",="!af!","!ag!",="ah","ai","aj",="ak","al",="am"
    echo !y!>> converted.csv
    )

pause

المشكلة هي أنه عند تشغيله، فشل البرنامج لإكمال، والمخرجات "النظام لا يمكن العثور على ملف هرف * .txt". ثم تغيرت ل حلقة ل

for /F "tokens=*" %%A in (*.txt) do ( ...

ولكن الخطأ تغير فقط إلى "النظام لا يمكن العثور على الملف * .txt"

يبدو أن النجم * يقرأ كنص؟ هل هذا له علاقة مع "الرموز +"؟ كيف يمكنني جعله بحيث سيتم تشغيل البرنامج النصي على أي ملف يبدأ مع هرف؟


for /f يتوقع اسم ملف واحد وغير قادر على استخدام أحرف البدل. استخدام عادي آخر لحوالي:

for %%X in (HRV*.txt) do (
  for /F "tokens=*" %%A in (%%X) do (
    ... etc. etc.
  )
)

بالمناسبة: طريقك من إعادة توجيه بطيئة جدا. يتم فتح ملف الوجهة، يتم كتابة سطر واحد ويتم إغلاق الملف مرة أخرى. فتح وإغلاق ملف وقتا طويلا جدا. يمكنك تجنب ذلك عن طريق فتح وإغلاقه مرة واحدة فقط. بدلا من:

for /l %%a in (1,1,10000) do (
  echo something>>file.txt
)

الذي يحتاج حوالي 27 ثانية، القيام:

(
  for /l %%a in (1,1,10000) do (
    echo something
  )
)>file.txt

الذي يحتاج حوالي 170 مللي ثانية . (يمف - مرات يعتمد على نظام الكمبيوتر الخاص بك)





fixed-width