You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Batch脚本编辑TXT文件中的无前置标识数字

如何用Batch脚本定位并修改TXT文件中无前置标识的数字

我尝试用Batch脚本编辑TXT文件,但目标数字(如示例中的58)没有前置标识,难以定位修改。

现有Batch脚本片段

@ECHO Off
setlocal ENABLEDELAYEDEXPANSION
cd /d "%~dp0"

set "Mfind=    %Random%"

@For %%G In ("%~dp03Ready\NSB") Do Set "sourcedir=%%~fG"
@For %%G In ("%~dp03Ready\NSBEdited") Do Set "destdir=%%~fG"

Set /p "FPats=Enter Your Amount: 

FOR /f "dedestination directory
 SET "newdest=%%~dpq"
 SET "newdest=!newdest:%sourcedir%=%destdir%!"
 SET "newdest=!newdest:~0,-1!"
 MD "!newdest!" 2>nul

(
  for /F "tokens=1* delims=:" %%a in ('findstr /N "^" "%%q"') do (
   set "line=%%b"
   if defined line IF "%%b" neq
 )
)>"!newdest!\%%~nxq" 

)
GOTO :NSBEditing

:nidC1
SET "line=%line:-=%"
SET "original=line%" goto nidC1
set "line=!line:%Mfind%=%Mfind%%FPats%!"
GOTO :eof

目标TXT文件部分内容

"upnn": 0,
"upfb": true,
"upcu": {
"adi
"isnc": false,
"erpm": 0
}
},
58, < ---------------- 尝试修改此类数字
{
"upma":ue,
"upcu": {
"adid": "lphaSixoSSC
"adtc": [
{
"kfti": 1000.0,
"kfva": 0.321
}

修复后的解决方案脚本

先修正原脚本的语法错误,再添加定位无标识数字行的逻辑。目标数字行的特征是仅包含数字和可选逗号,且不含JSON格式的引号、冒号等字符,以下是完整可运行的脚本:

@ECHO Off
setlocal ENABLEDELAYEDEXPANSION
cd /d "%~dp0"

@For %%G In ("%~dp03Ready\NSB") Do Set "sourcedir=%%~fG"
@For %%G In ("%~dp03Ready\NSBEdited") Do Set "destdir=%%~fG"

Set /p "FPats=Enter Your Amount: "

REM 遍历源目录下所有文件
FOR /f "delims=" %%q in ('dir /b /s "%sourcedir%\*"') do (
    REM 构建目标目录路径
    SET "newdest=%%~dpq"
    SET "newdest=!newdest:%sourcedir%=%destdir%!"
    REM 创建目标目录(忽略已存在的错误)
    MD "!newdest!" 2>nul

    REM 处理每一行内容
    (
        for /F "tokens=1* delims=:" %%a in ('findstr /N "^" "%%q"') do (
            set "line=%%b"
            if defined line (
                REM 判断当前行是否为仅含数字和逗号的目标行
                echo !line! | findstr /r "^[0-9][0-9]*,?$" >nul
                if !errorlevel! equ 0 (
                    REM 替换为输入数值,保留末尾逗号格式
                    if "!line:~-1!" equ "," (
                        echo !FPats!,
                    ) else (
                        echo !FPats!
                    )
                ) else (
                    REM 非目标行直接输出原内容
                    echo !line!
                )
            ) else (
                REM 空行直接输出
                echo.
            )
        )
    )>"!newdest!\%%~nxq"
)

GOTO :eof

关键逻辑说明

  • 目标行定位:用findstr /r "^[0-9][0-9]*,?$"匹配以数字开头、可选结尾带逗号的行,精准锁定无前置标识的数字行。
  • 目录同步:自动将源文件复制到目标目录修改,避免破坏源文件。
  • 格式保留:根据原行是否带逗号,保持输出格式一致。

内容的提问来源于stack exchange,提问作者JR Santos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:45:37