这是替换所有空格字符您的代码略有修改:
@echo OFF &SETLOCAL ENABLEDELAYEDEXPANSION
set "name=%~1"
for /f "delims=" %%a in (model-tim-valid-pgm.txt) do (
set "str=%%a"
set "str=!str:###=%name%!"
echo !str! >> tim-valid-pgm.mac
)
让我们来看看会发生什么(xxd
是一个可视化文件中hex
代码):
>type model-tim-valid-pgm.txt
###
>xxd -g1 model-tim-valid-pgm.txt
0000000: 23 23 23 0d 0a ###..
正如你所看到的,存在model-tim-valid-pgm.txt
没有尾随空间。现在,脚本运行和tim-valid-pgm.mac
由:
>script.bat ABC123
>type tim-valid-pgm.mac
ABC123
>xxd -g1 tim-valid-pgm.mac
0000000: 41 42 43 31 32 33 20 0d 0a ABC123 ..
>for /f "delims=" %a in (tim-valid-pgm.mac) do @echo "%a"
"ABC123 "
现在,你可以清楚地看到尾随空格(HEX )。如果你看看你的代码,尾部空间出现在这里:echo !str! >> tim-valid-pgm.mac
在这个声明:!str!
[空间] >>
。为了避免这种情况,用更好的代码风格:
@echo OFF &SETLOCAL ENABLEDELAYEDEXPANSION
set "name=%~1"
for /f "delims=" %%a in (model-tim-valid-pgm.txt) do (
set "str=%%a"
set "str=!str:###=%name%!"
>> tim-valid-pgm.mac echo !str!
)
..输出这里:
>script.bat ABC123
>type tim-valid-pgm.mac
ABC123
>xxd -g1 tim-valid-pgm.mac
0000000: 41 42 43 31 32 33 0d 0a ABC123..
>for /f "delims=" %a in (tim-valid-pgm.mac) do @echo "%a"
"ABC123"
现在不可能有尾随空格,即使有一些批处理脚本!str!
后。
你的意思是:使长话短说:-) – Endoro
@Endoro呵呵也许你应该已经有了解决方案,那么说明。 – foxidrive