Windows批处理脚本:如何实现移除字符串中'-[0-9]'及右侧内容的需求
解决批处理中移除首次"-数字"右侧内容的问题
我来帮你搞定这个批处理字符串截断的需求!你的原代码是把所有-替换成|后取第一个部分,这显然不符合你要找首次出现-+数字后截断的逻辑。下面是修改后的完整脚本,以及关键部分的解释:
修改后的完整脚本
@echo off SETLOCAL ENABLEDELAYEDEXPANSION set "RawPath=%~dp0" FOR /F "USEBACKQ TOKENS=*" %%M IN ("%RawPath%/mods") DO ( Set "fileNameCheck=%%M" :: 初始化处理后的字符串 Set "stripped=" :: 按"-"分割第一个部分和剩余内容 for /f "tokens=1* delims=-" %%a in ("!fileNameCheck!") do ( Set "stripped=%%a" Set "remaining=%%b" :check_next_part if not defined remaining goto end_check :: 检查剩余内容的第一个字符是否为数字 Set "first_char=!remaining:~0,1!" echo !first_char! | findstr /r "[0-9]" >nul :: 如果是数字,停止拼接;否则继续拼接下一个部分 if not errorlevel 1 goto end_check for /f "tokens=1* delims=-" %%c in ("!remaining!") do ( Set "stripped=!stripped!-%%c" Set "remaining=%%d" ) goto check_next_part :end_check ) :: 输出处理后的字符串,替换原有的%%A为!stripped! Echo [46m!stripped
