我们如何在批处理脚本中从字符串中删除前导和尾随空格?

时间:2013-05-15 12:15:37

标签: batch-file

我有一个first.properties文件,我正在读取该文件,跳过前5行并使用剩余的first.properties行创建一个新文件。这工作正常。但是我在新创建的文件中为每一行获取空格。我想删除这些空格。

我使用了以下代码:

@echo off
set new=0
setlocal ENABLEDELAYEDEXPANSION
for /F "skip=5" %%L in (first.properties) do (
echo %%L>>NewProjectsInfo.properties 
)
endlocal
pause 

first.properties如下:

name=abcd
number=bcde
address=cdef
mobile=efgh
worklocation=ghij

请帮我删除空格。

3 个答案:

答案 0 :(得分:2)

试试这个。当数字直接位于>>之前时可能会出现问题。字符。 您没有使用ENABLEDELAYEDEXPANSION,所以我也删除了它。

@echo off
set new=0
setlocal
for /F "skip=5 delims=" %%L in (first.properties) do (
>>NewProjectsInfo.properties echo %%L
)
endlocal
pause 

答案 1 :(得分:1)

代码中NewProjectsInfo.properties后面有一个空格。如果删除它,它会按预期工作。

令人遗憾,但看起来,批量解释命令为整行&分离出重定向部分。例如,在bash中,命令终止于>符号本身。

e.g。 echo hello >somefile.txt world会将hello world放入somefile.txt

答案 2 :(得分:0)

@ECHO OFF
SETLOCAL
(
FOR /f "skip=5 delims=" %%i IN (rltsf.txt) DO CALL :unpad %%i
)>output.txt

FC rltsf.txt output.txt
GOTO :eof

:unpad
ECHO %*
GOTO :eof

这种方法似乎有效,但我想它可能对线路内容有点敏感。如果我们有代表性数据,则更容易测试...