如何替换批处理文件中的字符串?延迟扩展和for循环正在使用中

时间:2016-08-11 14:44:10

标签: batch-file

我有这个数据源RESIDENTIAL.dat示例:

41-22-01-101-601         20   RANCH                 0       0   3   1   0       0       0       01 WALL  CCP  (1 STORY)       0TREATED WOOD                0ALUM., VINYL       0       0FORCED AIR W/ DUCTS        0C    0 

它是数据源的一行。我想删除所有" - "每行的第一个值,例如,这里是41-22-01-101-601。

这是我的蝙蝠代码:

@echo off
setLocal EnableDelayedExpansion
for /f "tokens=* delims= " %%a in (RESIDENTIAL.dat) do (
set line=%%a 
set chars=!line:~0,16!
set str=!chars:-=!
set pp=!line:%chars%=%str%!
echo !pp!>>residential_new.dat
)

我得到的结果是

=

经过测试,问题就在这里

set pp=!line:%chars%=%str%!   

任何人都可以帮我吗?

非常感谢!

1 个答案:

答案 0 :(得分:2)

如果有令牌,你应该使用它们:

setlocal enabledelayedexpansion
(
  for /f "tokens=1,*" %%a in (RESIDENTIAL.dat) do (
    set first=%%a
    echo !first:-=! %%b
  )
)>residential_new.dat

第一个标记%%a是第一个空格或制表符之前的所有内容,第二个标记%%b是第一个空格或制表符之后的整个标记。在第一个令牌中执行更改并输出更改的第一个令牌以及" rest-token"。