Board logo

标题: [文本处理] [已解决]批处理echo如何输出尾部不带空格或者删除文本行尾的空格 [打印本页]

作者: waitfortea    时间: 2022-9-24 13:48     标题: [已解决]批处理echo如何输出尾部不带空格或者删除文本行尾的空格

我的想法是替换配置文件的某一行,但是后来发现尽管我替换的内容是一样的,但是fc比较不一样,后来发现可能是我要替换的配置文件本事unix格式的,但是输出之后就会变成windows cr cl格式,后来使用了dos2unix命令转换,但是发现配置文件依旧无法被程序正确读入,再后来比较直接修改的配置文件和命令替换的配置文件,发现命令替换的配置文件每行后面都多了一个空格,这可能是echo > echo>>换行导致的,删除这些空格后发现就可以被正常读入了,问题在于用什么格式的命令输出到文本才可以换行但不在尾部添加空格呢,或者输入文本之后删除文本行尾的空格求助
作者: waitfortea    时间: 2022-9-25 13:57

已解决,是语法错误,echo输出的内容包括第一个空格后边到重定向符号之间的所有内容,如果重定向符号之间有空格,也会输出空格,所以输出内容必须紧贴重定向符号,然后就是不知道为什么do(echo sss>"%~dp0a.txt" )也会在行尾输出空格,去掉括号前的空格,即(echo sss>"%~dp0a.txt")就没有,这就让我很奇怪了
作者: Batcher    时间: 2022-9-25 18:51

回复 1# waitfortea


把重定向放在左边试试,参考:
http://bbs.bathome.net/thread-13860-1-1.html#pid233014
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. set /p "proxyhost=代理地址:"
  5. set /p "proxyport=代理端口:"
  6. set /p "downloadpath=下载路径:"
  7. set "num=0"
  8. cd. >a.txt
  9. for /f "tokens=1-2 delims==" %%a in (application.properties) do (
  10. if "comic.proxy.host" equ "%%a" (
  11. for %%i in (a.txt) do (
  12.             if %%~zi equ 0 (
  13.                 >"%~dp0a.txt" echo,%%a=%proxyhost%
  14.             ) else (
  15.                 >>"%~dp0a.txt" echo,%%a=%proxyhost%
  16.             )
  17.         )
  18. ) else if "comic.proxy.port" equ "%%a" (
  19. for %%i in (a.txt) do (
  20.             if %%~zi equ 0 (
  21.                 >"%~dp0a.txt" echo,%%a=%proxyport%
  22.             ) else (
  23.                 >>"%~dp0a.txt" echo,%%a=%proxyport%
  24.             )
  25.         )
  26. ) else if "comic.download.path" equ "%%a" (
  27. for %%i in (a.txt) do (
  28.             if %%~zi equ 0 (
  29.                 >"%~dp0a.txt" echo,%%a=%downloadpath%
  30.             ) else (
  31.                 >>"%~dp0a.txt" echo,%%a=%downloadpath%
  32.             )
  33.         )
  34. ) else if %%~zi equ 0 (
  35.         >"%~dp0a.txt" echo,%%a=%%b
  36.     ) else (
  37.         echo,%%a
  38.         >>"%~dp0a.txt" echo,%%a=%%b
  39.     )
  40. )
  41. for /f %%l in (a.txt) do (
  42. echo,%%l
  43. set /a num+=1
  44. if !num! equ 1 (
  45.         >application.properties echo,%%l
  46.     ) else (
  47.         >>application.properties echo,%%l
  48.     )
  49. )
  50. dos2unix application.properties
  51. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2