如何解决batch中echo命令写入文件时末尾多出多余空格的问题
Batch脚本echo写入文件末尾多余空格的修复方案
问题根源
你写的echo %password >> pass_list.txt代码中,%password%与>>之间的空格会被echo命令识别为输出内容的一部分写入文件,导致末尾出现多余空格。直接给变量加引号的写法会让引号本身也被输出,无法满足需求。
修复方案
方案1(最稳定,推荐):将重定向语句放在echo命令之前
重定向部分前置后无需担心变量和重定向符之间的空格问题,不会引入多余内容:
echo Enter new email address to be stored: set /p email= echo Enter in password for the email address: set /p password= >> email_list.txt echo %email% >> pass_list.txt echo %password%
方案2:删除变量与重定向符之间的所有空格
如果习惯把重定向放在语句末尾,直接去掉中间的空格即可:
echo %email%>>email_list.txt echo %password%>>pass_list.txt
注意:该方案存在兼容问题,如果变量末尾是数字,batch可能会将数字识别为句柄编号导致输出异常,因此只建议确认变量末尾不会出现数字的场景使用。
兼容特殊字符的优化方案
如果邮箱、密码中包含&、|、<等batch特殊字符,需要开启延迟变量扩展避免字符被解析为命令关键字:
@echo off setlocal enabledelayedexpansion echo Enter new email address to be stored: set /p email= echo Enter in password for the email address: set /p password= >> email_list.txt echo !email! >> pass_list.txt echo !password! endlocal
内容的提问来源于stack exchange,提问作者theshape
相关产品推荐
相关产品推荐

