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

如何在Batch句子生成器中实现输入句内直接调用文本文件变量

批处理句子生成器模板变量替换实现方案

你的需求完全可以实现,不属于Batch批处理的固有功能限制,只需要新增模板变量提取、替换逻辑即可,修改后的实现如下:

核心修改思路

  • 输入环节仅需录入带$前缀变量标记的完整模板语句,无需拆分前中后段内容
  • 自动提取模板内所有$开头的变量名,匹配对应词库txt文件,读取打乱后的首个条目存入临时变量
  • 批量替换模板中的变量标记为对应词库内容,直接输出完整生成句子

完整修改后代码

@echo off
setlocal enabledelayedexpansion

:: 仅需输入一次带变量的模板
set /p "template=请输入生成模板(变量以$开头,示例:this $celebrity is really great):"
set "rcs_path=C:\Users\%USERNAME%\Desktop\gg\rcs"

:gen
cls
echo 正在处理词库,请稍候 :)
:: 提取模板中所有$变量
set "temp_template=!template!"
:extract_var
if "!temp_template:$=!"=="!temp_template!" goto extract_done
for /f "tokens=1* delims=$" %%a in ("!temp_template!") do (
    set "var_part=%%b"
    :: 提取变量名(到非字母数字字符截止)
    set "var_name="
    :parse_var_name
    for /f "tokens=1* delims=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" %%c in ("!var_part!") do (
        set "split_char=%%c"
        if not "!split_char!"=="" (
            for /f "delims=!split_char!" %%d in ("!var_part!") do set "var_name=%%d"
        ) else (
            set "var_name=!var_part!"
        )
    )
    :: 处理对应词库
    if exist "!rcs_path!\!var_name!.txt" (
        :: 打乱词库
        cd /d "!rcs_path!"
        del /q "new!var_name!.txt" 2>nul
        for /f "delims=" %%e in (!var_name!.txt) do call set "$$%%random%%=%%e"
        (for /f "tokens=1,* delims==" %%e in ('set $$') do echo(%%f)>new!var_name!.txt
        set "$$="
        :: 读取第一个条目存为变量
        set /p "!var_name!="<"new!var_name!.txt"
    )
    :: 截断模板继续找下一个变量
    set "temp_template=!var_part:*%split_char%=!"
)
goto extract_var
:extract_done

:: 替换模板中的所有$变量
set "result=!template!"
for /f "tokens=1 delims==" %%v in ('set') do (
    set "result=!result:$%%v=!%%v!"
)

:: 输出结果
cls
echo.
echo 生成结果:!result!
echo.
echo 输入back返回修改模板,输入gen重新生成新内容
set /p "instruction=请输入操作指令:"
if /i "!instruction!"=="back" (
    endlocal
    goto :eof
)
if /i "!instruction!"=="gen" (
    goto gen
)
goto instruction

注意事项

  • 变量名仅支持英文、数字组合,不要包含空格、特殊符号
  • 词库文件需和$后的变量名完全对应,例如$celebrity对应词库文件必须为celebrity.txt
  • 保留了原脚本的词库打乱逻辑,每次执行gen指令都会重新打乱词库生成新的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:15:03