禁用延迟扩展的批处理中拆分文件夹名称变量的方法
解决方案
可以利用for /f命令按指定分隔符拆分文件夹名称,同时保留原有%FOLDER%的赋值逻辑,修改后的完整代码如下:
@echo off setlocal EnableExtensions DisableDelayedExpansion :: 获取上级文件夹名称并赋值给FOLDER For %%G In ("%~dp0..") Do Set "FOLDER=%%~nxG" :: 拆分FOLDER为三个部分,以"- "(减号+空格)作为分隔符 for /f "tokens=1,2,3 delims=- " %%a in ("%FOLDER%") do ( set "startFOLDER=%%a" set "midFOLDER=%%b" set "endFOLDER=%%c" ) :: 输出变量用于验证 echo FOLDER: %FOLDER% echo startFOLDER: %startFOLDER% echo midFOLDER: %midFOLDER% echo endFOLDER: %endFOLDER% start chrome "https://www.patreon.com/%endFOLDER%" endlocal
关键说明
- 保留原有获取上级文件夹名称的逻辑,确保
%FOLDER%变量完整存储整个文件夹名。 for /f命令中,tokens=1,2,3指定提取分割后的前三个部分,delims=-设置分隔符为减号和空格,这样会自动去掉名称中的-分隔符,直接提取有效内容。- 拆分后的三个部分分别存入
startFOLDER、midFOLDER、endFOLDER三个变量,完全匹配需求。
测试示例输出:
FOLDER: 419065 - patreon - gotgames startFOLDER: 419065 midFOLDER: patreon endFOLDER: gotgames
内容的提问来源于stack exchange,提问作者user13646154
相关产品推荐
相关产品推荐

