我有这个数据源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%!
任何人都可以帮我吗?
非常感谢!
答案 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"。