批处理文件替换文本文件中的文本,但保留第一个单词/列

时间:2014-05-09 11:55:40

标签: file variables batch-file replace

好的伙计们。我是新手来筹码。寻找答案但找不到答案。 我的txt文件

CUMBS02778607   DVD/SLS34142072,Z5
CUMBS02778844   SHIP/25/02/14/HR/15,Z5
CUMBS02780058   DVD/SLS34142200,ISSUE 9,Z5
CUMBS02779867   SHIP/27/02/14/CAM/49,Z5
CUMBS02779883   SHIP/27/02/14/CAM/48,Z5
CUMBS02779816   SHIP/27/02/14/CAM/36,Z7
CUMBS02779948   SHIP/27/02/14/CAM/46,Z5
CUMBS02780309   DVD/SLS34142262,Z5
CUMBS02780218   DVD/SLS34142231,Z5
CUMBS02780406   DVD/SLS34142266-267,Z5
CUMBS02779956   SHIP/27/02/14/CAM/50,Z5
CUMBS02779743   DVD/SLS34142181-182,Z5
CUMBS02779611   SHIP/27/02/14/PRO/02,Z4
CUMBS02780155   DVD/SLS34142191-193,Z5
CUMBS02777848   ORD.7737623,REF.62664,SLS34141962,Z7

包含以下行:

CUMBS02778607   DVD/SLS34142072,Z5

我的脚本批量运行如下。搜索..... SLS并用SLS替换它

@echo off &setlocal
set "search=*SLS"
set "replace=SLS"
set "textfile=new.txt"
set "newfile=output.txt"

(for /f "delims=" %%i in ('findstr /n "^" "%textfile%"') do (
    set "line=%%i"
    setlocal enabledelayedexpansion
    set "line=!line:%search%=%replace%!"
    echo(!line!
    endlocal
))>"%newfile%"
type "%newfile%"

问题是文件返回并丢弃CUMBS ********号码。我需要保持这是一个变量并将其放回字符串的开头。这将删除字符SLS之前的任何垃圾。行 任何帮助都会受到赞赏。

返回的文字示例。之后的行开始像2:,5:等而不是以CUMB ******开头我将删除。

SLS34142072,Z5
2:CUMBS02778844 SHIP/25/02/14/HR/15,Z5
SLS34142200,ISSUE 9,Z5
4:CUMBS02779867 SHIP/27/02/14/CAM/49,Z5
5:CUMBS02779883 SHIP/27/02/14/CAM/48,Z5
6:CUMBS02779816 SHIP/27/02/14/CAM/36,Z7
7:CUMBS02779948 SHIP/27/02/14/CAM/46,Z5
SLS34142262,Z5
SLS34142231,Z5
SLS34142266-267,Z5
11:CUMBS02779956    SHIP/27/02/14/CAM/50,Z5
SLS34142181-182,Z5
13:CUMBS02779611    SHIP/27/02/14/PRO/02,Z4
SLS34142191-193,Z5
SLS34141962,Z7

1 个答案:

答案 0 :(得分:0)

@echo off &setlocal
set "search=*SLS"
set "replace=SLS"
set "textfile=new.txt"
set "newfile=output.txt"

(for /f "usebackq tokens=1,*" %%a in ("%textfile%") do (
    set "line=%%b"
    setlocal enabledelayedexpansion
    set "line=!line:%search%=%replace%!"
    echo(%%a !line!
    endlocal
))>"%newfile%"
type "%newfile%"

你差不多完成了。

使用*SLS要求从排队开始删除到SLS,因此它会删除CUMBS*字段。相反,在选项卡上拆分输入记录,保留第一个字段并仅在第二个字段上执行替换。

编号来自findstr /n因为不需要,删除了