为什么ECHO命令会在文件中打印一些额外的尾随空格?

时间:2017-10-27 06:02:45

标签: windows batch-file

我正在从数据文件中读取多行并将其附加到另一个文件。问题是在附加行末尾的输出文件中有一些额外的空间。必须根据我的要求修剪尾随空格,因为在原始数据文件中,行末尾没有空格。我尝试了所有可能的事情,但我仍然无法实现这一点。

@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 ...获得1行空间

  2. set lines=%%c
    echo !lines!>>temp_data.txt ...获得1行空间

  3. echo !lines:~0,-1!>>temp_data.txt ...修剪线的最后一个字符

  4. set lines=!lines: =!
    echo !lines!>>temp_data.txt ...行内的所有空格也被修剪(只需修剪线的末尾,原始数据文件中不存在)

2 个答案:

答案 0 :(得分:2)

您应该删除echo %%c>>temp_data.txt行(等等)上的终端空间。这是终端空间造成的典型混乱。

答案 1 :(得分:0)

这应该是必要的,包括需要对第100行进行评论。

一:不需要时使用延迟扩展 二:删除echo命令中的尾随空格。

@(
    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
)