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

批处理脚本问题:延迟扩展丢失链接!字符,无法使用findstr

解决批处理生成带编号Mega链接列表的字符丢失与崩溃问题

最近折腾了个批处理脚本,想从Mega远程目录生成带编号的链接列表,结果踩了俩让人头疼的坑:

  • 链接里的!字符会被延迟扩展直接移除,导致链接彻底失效(这可是Mega链接里的必要组成部分啊)
  • 尝试用findstr提取链接时,它会把链接和文件名放在同一行,只要文件名里带括号,脚本直接崩溃;只能靠usebackq获取纯链接,但又绕回第一个丢!的问题,完全陷入矛盾循环。

好在最后总算捣鼓出可行的代码了,分享给遇到同样问题的朋友:

@echo off
:start:
megals --reload /Root/
set /p var1="dir? " & megals /Root/%%var1%%
for /f "tokens=1,* delims=:" %%A in ('megals -n /Root/%%var1%% ^|findstr /n "." ') do (
    set Link[%%A]=%%B
    Echo %%A %%B
)
setlocal DisABLEDELAYEDEXPANSION
set /a c=0
FOR /F "tokens=1 usebackq" %%i in (`megals -n -e /Root/%%var1%%`) do (
    set /a c+=1
    call set "string[%%c%%]=%%i"
)
set /P number="Enter number: "
FOR /F "tokens=*" %%g IN ('call echo %%string[%number%]%%') do (SET VAR2=%%g)
echo %Var2%
echo.
Megadl %VAR2% & echo. && goto :start:
pause

关键改进点说明:

  • 关闭延迟扩展保留特殊字符:在存储链接的代码块中启用setlocal DisABLEDELAYEDEXPANSION,避免链接中的!被延迟扩展解析删除;同时用call set间接赋值,确保带特殊字符的链接能正确存入数组变量。
  • 拆分编号与链接避免崩溃:先用findstr /n "."给megals的输出添加行号,再通过tokens=1,* delims=:拆分编号和链接内容,这样显示带编号列表时不会触发文件名含括号的崩溃问题。
  • 间接读取变量保证完整性:用call echo %%string[%number%]%%配合for /f读取指定编号的链接,避开直接引用变量时的特殊字符解析问题,确保链接能完整传递给megadl命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:16:33