繁体   English   中英

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

[英]Batch File Replace text in text file but keep first word/column

好了朋友们。 我是新手。 搜索了一个答案,但找不到答案。 我的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
@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不需要,将其删除

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM