【问题标题】:DOS Batch : remove characters from string in a FOR loopDOS批处理:在FOR循环中从字符串中删除字符
【发布时间】:2014-11-03 09:56:47
【问题描述】:

我有一个 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 窗口正在立即打开和关闭,并且没有对字符串进行任何操作...感谢您对此操作的帮助。

【问题讨论】:

    标签: string batch-file for-loop trim


    【解决方案1】:

    您必须为 FORloop 中的变量的多次更改激活延迟扩展

    像这样:

    @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
    

    【讨论】:

      【解决方案2】:
      set str=    C086014-T1374" 
      echo.%str%
      set str=%str:"= %
      echo.%str%.
      set str=%str: =%
      echo.%str%.
      

      这是一个必须放入循环体的示例。 set str=%str:"= %" 替换为 set str=%str: =% 删除空格。

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

      【讨论】:

      • 谢谢,但我的文件 file.txt 中的字符串仍然有问题,根本没有修改... shell 窗口显示:D:\file.txt><set str=C086002-B3116 set str="= set str = = > 对于来自 file.txt 的每个值。跨度>
      猜你喜欢
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多