如何使用批处理脚本添加空白区域?

时间:2015-03-16 20:37:16

标签: string batch-file

有没有办法循环一个文本文件,它会在每行前面添加一个EMPTY SPACE

commit.txt

commit c9bee
Merge: 7db
Author: TOM
Date:   Fri Mar 13

Author: TIM

output.txt的

 commit c9bee
 Merge: 7db
 Author: TOM
 Date:   Fri Mar 13

 Author: TIM

4 个答案:

答案 0 :(得分:1)

- 在此处提及不需要转义空格,您可以使用ECHO 1获取(空格)1。

尝试使用^

转义空间

例如:

  

C:\ Scripts> echo ^ string

     

的字符串

     

C:\ Scripts> echo string

     

的字符串

-edit,当你急于完全阅读问题时会发生这种情况!

试试这个:

  

C:\ Scripts> for / f%a in(input.txt)do echo ^%a

C:\Scripts>echo  test1
 test1
C:\Scripts>echo  test2
 test2

答案 1 :(得分:1)

这是一个解决方案:

for /f "delims=" %i in (file) do @echo  %i

请注意,如果在脚本中使用此百分比,则必须加倍(与交互式使用相反)。

答案 2 :(得分:1)

试试这个。这"覆盖"原始文件。如果你想把名字保存为output.txt只要注释掉对Overwriteoriginal的调用

@echo off

REM makes sure the user passed in a file name
if [%1]==[] (
    echo Must pass in a file name
) else (
    Call:AddSpaceToEveryLine %1

    Call:OverwriteOriginal %1

    echo processed %1
)

GoTo:EOF

:OverwriteOriginal 
    REM overwrites original file with spaced file
    del %1

    rename output.txt %1
GoTo:EOF

:AddSpaceToEveryLine
    REM there is actually one space after the equals sign
    set space= 
    for /f "tokens=*" %%a in (%1) do (
      echo %space%%%a >> output.txt
    )
GoTo:EOF

答案 3 :(得分:0)

它可以很容易地完成,并且不需要for循环。只需声明一个变量,然后在代码的末尾几次将声明的变量回显到输出文件中。在这种情况下,我正在发送到名为c:\sample.txt的文件。这是一个示例:

@echo off

set blank=

:: Your main code goes here

echo. %blank% >> c:\sample.txt
echo. %blank% >> c:\sample.txt
echo. %blank% >> c:\sample.txt

echo. Author: TIM >> c:\sample.txt