windows - لماذا يقوم أمر ECHO بطباعة بعض المساحة الزائدة في الملف؟




batch-file (2)

لديك مساحة طرفية على الخط echo %%c>>temp_data.txt (من بين أمور أخرى) والتي يجب حذفها. هذا نموذجي للارتباك الذي تسببه المساحات الطرفية.

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

@echo off
setlocal enabledelayedexpansion
FOR /F "delims=" %%c IN (C:\Users\184863\Desktop\mydata.txt) DO ( 
echo %%c>>temp_data.txt 
)
endlocal

الخيارات التي جربتها:

  1. echo %%c>>temp_data.txt ... الحصول على نهاية مسافة واحدة من السطر

  2. set lines=%%c
    echo !lines!>>temp_data.txt ... الحصول على نهاية مسافة واحدة من السطر

  3. echo !lines:~0,-1!>>temp_data.txt ... الحرف الأخير من السطر قلص

  4. set lines=!lines: =!
    echo !lines!>>temp_data.txt ... يتم أيضًا echo !lines!>>temp_data.txt كل المسافات داخل السطر (تحتاج إلى قطع نهاية السطر فقط ، وهو غير موجود في ملف البيانات الأصلي)


هذا يجب أن يفعل المحتاجين ، بما في ذلك الحاجة إلى التعليق على السطر 100.

أولاً: لا تستخدم التوسع المؤجل عندما لا يكون ذلك ضروريًا.
الثاني: إزالة المسافة الزائدة في الأمر صدى الخاص بك.

@(
    SETLOCAL
    ECHO OFF
    SET "_File=C:\Users\184863\Desktop\mydata.txt"
    SET "_Count="
    SET "_Comment=Your Special Comment "
)

FOR /F "tokens=* delims=" %%c IN (%_File%) DO (
    SET /A "Count+=1">NUL
    CALL ECHO.[%COUNT%] | FIND "[100]">NUL && (
        ECHO:%_Comment%%~c
    ) || (
        ECHO.%%c
    )
)>>"%~dp0temp_data.txt"

REM Replace the original file with the commented File
MOVE /Y "%~dp0temp_data.txt" "%_File%"

(
    ENDLOCAL
    EXIT /B 0
)