DOS批处理:从FOR循环中的字符串中删除字符

时间:2014-11-03 09:56:47

标签: string batch-file for-loop trim

我有一个包含以下内容的TXT文件:

C086002-B3116
C086014-T1234  
C086014-T1325
C086014-T1375" 
C086014-T1374"  

这些字符串包括尾部空格和双引号。

我想使用FOR循环删除它们:

for /f %%a in (file.txt) do (
    set str=%%a
    set str=%str: =%
    set str=%str:"=%
)

Shell窗口立即打开和关闭,字符串上没有任何操作...感谢您对此操作的帮助。

2 个答案:

答案 0 :(得分:1)

set str=    C086014-T1374" 
echo.%str%
set str=%str:"= %
echo.%str%.
set str=%str: =%
echo.%str%.

这是你必须放在循环体中的一个例子。 set str=%str:"= %"替换set str=%str: =%删除空格。

您可以找到更多字符串操作here

答案 1 :(得分:1)

您必须激活延迟扩展,以便在FOR循环中多次更改变量

像这样:

@echo off
setlocal enabledelayedexpansion
for /f  "delims=" %%a in (file.txt) do (
    set str=%%a
    set str=!str: =!
    set str=!str:"=!
    echo !str!
)

如果您需要文件中的输出:

@echo off
setlocal enabledelayedexpansion
(for /f  "delims=" %%a in (file.txt) do (
    set str=%%a
    set str=!str: =!
    set str=!str:"=!
    echo !str!
)) >output.txt