【问题标题】:windows batch increment in specific alphanumeric string特定字母数字字符串中的 Windows 批量增量
【发布时间】:2014-02-06 13:34:58
【问题描述】:

我有一个源文本文件,我想在其中操作在分号之前添加一个递增的字母数字,如下所示并输出 OUTPUT.txt 来源:

2:苹果、椰子、樱桃; 3:香蕉、芒果; 4:谷物、坚果; .......... 等等

期望的输出:

2:苹果、椰子、樱桃、TP001; 3:香蕉、芒果、TP002; 4:谷类、坚果、TP003; .........等等 ----------

所以我想出了以下脚本,但它只是将每个分号替换为 ,TP001;, 有人可以帮助我如何增加 TP001~ 等作为我想要的输出。

@echo off
setlocal enabledelayedexpansion
set txtfile=%1
set newfile=OUTPUT.txt
if exist "%newfile%" del /f /q "%newfile%"
for /f "tokens=*" %%a in (%txtfile%) do (
   set newline=%%a
   set newline=!newline:^;=^,TP001;!
   echo !newline! >> %newfile%
)

我希望你能帮助我解决这个问题。谢谢...

【问题讨论】:

    标签: windows batch-file increment alphanumeric


    【解决方案1】:
    @echo off
    setlocal enabledelayedexpansion
    set "txtfile=%~1"
    set "newfile=OUTPUT.txt"
    break > "%newfile%"
    
    set "count=1000"
    (for /f "usebackq delims=;" %%a in ("%txtfile%") do (
        set /a "count+=1"
        echo(%%a,TP!count:~-3!
    ))>"%newfile%"
    

    【讨论】:

    • 感谢 MC ND 的帮助..但我应该搜索并替换分号;并将其替换为 TP001~ 并且并非所有行都有分号.. 我还有一些其他行不应该插入 TP001~.. 谢谢。我应该怎么做呢
    【解决方案2】:

    给你:

    @echo off
    setlocal enabledelayedexpansion
    set txtfile=%1
    set newfile=OUTPUT.txt
    
    if exist "%newfile%" del /f /q "%newfile%"
    for /f "tokens=*" %%a in (%txtfile%) do (
       set newline=%%a
       set /a "inc+=1"
       set num=00!inc!
       set num=!num:~-3!
       set newline=!newline:^;=^,TP!
       echo !newline!!num!; >> %newfile%
    )
    

    【讨论】:

    • 谢谢matt,但是文件的某些部分没有分号,不应该在其中添加TP;在那个区域..所以我需要找到分号 (;) 并将其替换为 TP00*;
    【解决方案3】:

    您的数据有一个尾随空格,因此代码会从每行的末尾删除两个字符。

    @echo off
    setlocal enabledelayedexpansion
    set "txtfile=%~1"
    set "newfile=OUTPUT.txt"
    set c=0
    if exist "%newfile%" del /f /q "%newfile%"
    for /f "usebackq delims=" %%a in ("%txtfile%") do (
       set /a c+=1
       set "n=000!c!"
       set "n=!n:~-3!"
       set "line=%%a"
       set "line=!line:~0,-2!
       >>"%newfile%" echo !line!,TP!n!;
    )
    

    【讨论】:

    • 感谢7you foxidrive,输出为TPn:~-3;因为它不会增加..顺便说一下,不是整个文件都有分号,所以我不希望用 TP00* 插入这些部分;所以我想要的是搜索分号;然后将其替换为 TP00*;那是递增的。谢谢
    • 最后我替换了一个!。它可以满足您的要求,因此如果您没有显示正确的示例数据,那么您得到的代码对于不同格式的数据失败也就不足为奇了。
    • 是的,我有点错过了这些信息..如果你能帮我解决这些问题,我会很高兴..谢谢..
    • JFTR 作为支持人员,当数据显示明显是伪造的,并且 OP 需要帮助时,这是非常令人沮丧的。你提供了帮助,100 次中有 95 次你必须重做你所做的,因为数据是假的,它会影响代码。请参阅我在上面所做的编辑。
    猜你喜欢
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多