• 技术
  • 记录一些 自己用到的代码 2025-0226更新工具集、代码样例等

御所工具集 Mega 【LXH维护的工具集】
解压、牛奶电池解密工具、电脑安卓环境、录屏、转区、CE、解包软件

关于转区。
知名转区软件。Locale.Emulator。
可在Github下载。

关于录屏
ScreenToGif
可在其官网下载 Portable 版本。
导出gif的时候,选择GIF,KGy SOFT 编码,可以直接上传到御所图库。

关于图库,
御所图库单文件上限4MB。超过的话可使用8酱推荐图库
ImgBB

关于MKV
mkv是一种视频封装格式,最常见于带外挂字幕的视频。
mkvtoolnix 是一个开源MKV工具集,可用于提取、合并mkv视频文件。

非游戏根目录存档位置相关。
一般会在 C:\Users\【用户名】\AppData
但是系统可能不在C盘,用户名也是各式各样。所以可以使用
%HOMEDRIVE%%HOMEPATH%\AppData 代替。在文件资源管理器 路径中直接复制进去就是
剩下 根据游戏不同,可能在 Local LocalLow Roaming 中。可以直接往上加。例如
%HOMEDRIVE%%HOMEPATH%\AppData\LocalLow

当然可以进一步使用系统变量。
C:\Users\【用户名】\AppData\Local = %LocalAppData%
C:\Users\【用户名】\AppData\Roaming = %AppData%
C:\Users\【用户名】\AppData\LocalLow = %USERPROFILE%\AppData\LocalLow

当然的当然,可以再进一步写点bat脚本,实现双击就打开对应文件夹位置。

@echo off
rem "设置文件编码UTF-8 不然输出中文会乱码"
chcp 65001 >nul
explorer "%USERPROFILE%\AppData\LocalLow"
exit

新建一个文本文档,复制黏贴,修改,保存,修改后缀为bat。
简答说明一下, @echo off 固定的开头用于关闭代码回显。
REM 注释命令
explorer "%USERPROFILE%\AppData\LocalLow" 开启一个新窗口

当然的当然的当然,可以再再进一步,直接尝试打开游戏存档位置。
假设游戏存档位置在,%LocalAppData%\游戏文件夹\游戏子文件夹 这里可以多层文件夹

@echo off
chcp 65001 >nul
set "target_dir=%LocalAppData%\游戏文件夹\游戏子文件夹"

REM 直接创建目录(自动处理多级目录和已存在的情况)
mkdir "%target_dir%" >nul 2>&1

REM 打开目标文件夹
explorer "%target_dir%"
exit

其中mkdir 会尝试创建对应文件夹,如果已经存在也不影响。

实际上,还可以再再再进一步,实现自动复制存档过去。但是,懒得继续了。

实战

好的,那么在不增加自动复制功能的前提下,我们来个实战练习,然后往里面加一点点细节。
比如 稿子 S4730 【但是因为游戏打包的比本文早,并没有合并进去】
游戏存档位置是 C:\Users\【用户名】\AppData\Local\Aurelia
于是我们可以将其视为 %LocalAppData%\Aurelia
以下为详细代码以及注释说明

@echo off
chcp 65001 >nul
set "target_dir=%LocalAppData%\Aurelia"

echo ========》   https://reimu.net/   《========
echo 本资源是来自灵梦御所的免费资源,
echo 如果您是付费购买的,那么恭喜你被坑了
echo .
echo 这就打开存档位置

REM 直接创建目录(自动处理多级目录和已存在的情况)
mkdir "%target_dir%" >nul 2>&1

REM 打开目标文件夹
start explorer "%target_dir%"

REM 设置倒计时功能
setlocal enabledelayedexpansion

REM 生成退格符(ASCII 8)
for /f %%a in ('"prompt $H & echo on & for %%b in (1) do rem"') do set "bs=%%a"

REM 生成足够覆盖整行的退格符(50个)
set "bs_line="
for /l %%i in (1,1,50) do set "bs_line=!bs_line!!bs!"

REM 倒计时逻辑
set /a "count=5"
echo 操作完成,窗口将在5秒后关闭...
:countdown
<nul set /p "=!bs_line!剩余时间: !count! 秒"
timeout /t 1 /nobreak >nul
set /a "count-=1"
if !count! gtr 0 goto countdown

REM 最终关闭提示
<nul set /p "=!bs_line!窗口即将关闭..."
timeout /t 1 >nul
exit

浮动目录系列
<div id="ml" style="position: sticky;bottom: 0px;background: linear-gradient(to right, #E27184, #D01837, #FD525A);color: white;padding: 1px;text-align: center;text-decoration: none">
<img style="margin: auto 3;display: inline;height: 26px" src="https://img.reimu.net/uploads/2025/01/6787bf725891f.png" alt="Fu" />
<a style="color: white" href="#GS">简介</a>|
<a style="color: white" href="#RW">人物</a>|
<a style="color: white" href="#CG">CG</a>|
<a style="color: white" href="#comments">评论</a>|
<a style="color: white" href="https://store.steampowered.com/app/2755480/" target="_blank" rel="noopener">
<img style="margin: 0 0;display: inline;height: 20px" src="https://img.reimu.net/uploads/2025/01/6783e2ec7876f.png" alt="Steam" />入正</a>|
<a style="color: white" href="https://www.dlsite.com/maniax/work/=/product_id/RJ01117570.html/" target="_blank" rel="noopener">
<img style="margin: 0 0;display: inline;height: 15px" src="https://img.reimu.net/uploads/2025/01/6782da4349abf.png" alt="DLsite" />入正</a>
</div>

添加换行只是为了方便编辑和阅读。实际编辑后,需要将换行全部删除合并

颜色

这是春节用的红色。例如 S4703
linear-gradient(to right, #E27184, #D01837, #FD525A);
这是假冒萌龙时候用的绿色和他的logo 例如 S4701
linear-gradient(to right, #32CD32, #3CB371, #009900);
此外萌龙酱这边也是第一次对logo的表现css进行了微调。
<img style="margin-right: 5px;margin-bottom: 5px;display: inline;height: 24px" src="https://img.reimu.net/uploads/2025/02/67a3edca63186.png">
margin-right: 5px; 控制图片和右边文字间距
margin-bottom: 5px; 控制图片和底部间距
display: inline; 设置图片为行内元素
height: 24px 控制图片大小
此外图片建议使用透明背景的png,效果更好。

组件

其次,
<a style="color: white" href="#GS">简介</a>|
href 指向 GS id的位置。对应文章中 id="GS" 的地方,这个需要投稿姬自己加,自己设。| 是为了美观添加的竖线。
这些可以叠加。
<a style="color: white" href="#comments">评论</a>|
这个是一个固定链接 href="#comments" 这个id是御所模板默认有的,方便跳转到评论位置。
<a style="color: white" href="#main">回到顶部</a>|
这是另一个固有链接,回到顶部,但是由于御所本身就有一个浮动到顶部的按钮,所以位置紧张的时候可以删掉。

<a style="color: white" href="https://store.steampowered.com/app/2755480/" target="_blank" rel="noopener">
<img style="margin: 0 0;display: inline;height: 20px" src="https://img.reimu.net/uploads/2025/01/6783e2ec7876f.png" alt="Steam" />入正</a>|
<a style="color: white" href="https://www.dlsite.com/maniax/work/=/product_id/RJ01117570.html/" target="_blank" rel="noopener">
<img style="margin: 0 0;display: inline;height: 15px" src="https://img.reimu.net/uploads/2025/01/6782da4349abf.png" alt="DLsite" />入正</a>
<a style="color: white" href="https://pepper0.fanbox.cc/" target="_blank" rel="noopener"><img style="margin-bottom: 5px;display: inline;height: 20px" src="https://img.reimu.net/uploads/2025/02/67bb5b7f97688.png" alt="Fanbox" />支持作者</a>

这是两个入正链接,外加一个Fanbox支持作者。img 是已经上传到御所图库的logo。 使用的时候只需要替换对应了 href="xxxx" 中的Steam id或者 DL id 或者 作者主页链接。

电脑端,手机端,图片点击放大。
有些游戏截图,CG截图,实际分辨率挺大的,但是由于网页版面有限,一般可见大小有限。这个时候就可以考虑使用库来进一步优化阅读体验。例如。S4701中CG部分。点击CG部分的图片,会在网页端放大,同时可以通过鼠标滚轮或者右上角图库标志进行切换图片。

图片

是一个稿子必备的东西,添加一个普通的图片。
<img src="https://img.reimu.net/uploads/2025/02/67a4424e3bc89.png" />
可以让他居中一下 class="aligncenter"
<img class="aligncenter" src="https://img.reimu.net/uploads/2025/02/67a4424e3bc89.png" />
可以让他跟下面的东西靠近一点 margin-bottom: 0; 下方的margin设置为0,可以让图片见变得紧凑点
<img class="aligncenter" style="margin-bottom: 0;" src="https://img.reimu.net/uploads/2025/02/67a4424e3bc89.png" />
可以设置图片应该缩放到多大 width="600"
<img class="aligncenter" style="margin-bottom: 0;" width="600" src="https://img.reimu.net/uploads/2025/02/67a4424e3bc89.png" />

使用FancyBox让图片可以放大

为了实现上面S4701中的效果。
<a class="fancybox" href="https://img.reimu.net/uploads/2025/02/67a4424e3bc89.png" data-fancybox="CGs"><img class="aligncenter" style="margin-bottom: 0;" src="https://img.reimu.net/uploads/2025/02/67a4424e3bc89.png" /></a>
实际上就是给之前的 <img xxxx> 标签增加一个 <a> 外壳。变成 <a href=xxxx><img xxxxx /></a>
这个<a class="fancybox" href="xxxx" data-fancybox="CGs"> 主要有3个部分。

  1. class="fancybox" 固定参数。
  2. href="xxx" 这个是对应图片的链接。或者是同图片更高清版本。当然如果用其他图片,就会出现点开前后图片不一样的情况。
  3. data-fancybox="CGs" CGs 是一个自定义的属性值,所有相同的图片会归到同一个画册中。这样滑轮切换的时候不会出现其他不想出现的图片。注意 这个值不要跟 文章中 id重复,例如我用了 id="CG" 所以我这里只能用 CGs 或者 cg1 之类的值。

拓展

实际上,Fancybox核心就是在套上的这个 <a xxx></a> 标签。于是可以给文字套上。变成点击文字弹出一张大图。【也就是被套的不一定需要是图片】

音频播放器

Html 音频播放,需要一个直链的mp3 文件。
例如 S473x 的播放器的See you again
<audio controls src="https://www.kumeiwp.com/wj/11656/2022/01/18/243f5d3184af968e36ebb30281814fd4.mp3"></audio>
其中,https://www.kumeiwp.com/wj/11656/2022/01/18/243f5d3184af968e36ebb30281814fd4.mp3 就是一个直链的mp3音频
这里用的是 酷美直连提供的免费分享服务。看起来已经免费运行好多年了,且用且珍惜这种免费流量服务。

MD5,有许许多多的用途,但在御所,基本就是用来确认你下载的文件是否在下载中坏了。
比如8酱会说:
核对下MD5,看看是不是文件下载受损

文件名称: Rxxx.jpg
文件大小: 8.25 GB (8,860,252,050 字节)
MD5: 4E1CE94DC5009C93A6390A82E7596F0A

自行核对MD5,MD5不一致就证明压缩包下载受损,可以尝试使用我在压缩包内的rr3修复记录,修复不了就重新下载去 ╮(╯▽╰)╭

MD5 结果不区分大小写。

如何计算呢?要么跟8酱一样用软件。要么可以用脚本。比如,将以下2.0版本代码复制到一个txt文本中,修改后缀为bat。
复制到需要计算图片,压缩包的地方,双击运行,就会自动计算同目录下对应类型文件md5。
或者把单个文件 拖拽到上面。
再或者把一个文件夹拖拽到上面。

@echo off
rem "设置文件编码UTF-8 不然输出中文会乱码"
chcp 65001 >nul
setlocal enabledelayedexpansion

rem "检查是否有参数传递"
if "%~1"=="" ( 
	rem 没有参数传递,遍历当前目录内的文件 
	set "retFname=MD5结果.txt"
	echo 无输入参数,同文件夹内遍历结果保存在!retFname!
	set "dirPath=."
) else ( 
	rem 有参数传递,检查是文件夹还是文件 
	set "inputPath=%~1" 
	echo 输入参数: !inputPath!
	if exist "%~1\" ( 
		rem 是文件夹 
		set "dirPath=%~1"
		set "retFname=%~nx1_MD5.txt"
		echo 文件夹名称: %~nx1
	) else ( 
		rem 是文件
		if exist "%~1" (
			set "filePath=%~1"
			set "retFname=%~nx1_MD5.txt"
			echo 文件名称: %~nx1 
			rem "只有一个文件 跳转到单个文件的部分"
			goto :fileMD5
		) else (
			echo "%~1" 不存在。
			pause
			exit /b
		)
	) 
)
echo.

rem "==========文件夹遍历MD5"
:dirMD5
rem "输出文件名 一个 > 覆盖之前的记录"
echo 自行核对MD5,MD5不一致就证明压缩包下载受损,可以尝试使用压缩包内的rr3修复记录(如有),修复不了就重新下载去  ╮(╯▽╰)╭ > !retFname!
rem "2个 >> 续写,添加一个空行"
echo. >> !retFname!

for %%f in ("%dirPath%\*.jpg" "%dirPath%\*.rar" "%dirPath%\*.7z" "%dirPath%\*.mp4") do (
	echo 开始计算:%%~nxf
	rem "获取文件大小"
	set "size=%%~zf"
	set "Tsize=%%~zf"
	call :calSize
	
	rem Calculate MD5 checksum and convert to uppercase
	for /f "tokens=*" %%a in ('certutil -hashfile "%%f" MD5 ^| find /i /v "certutil" ^| find /i /v "MD5"') do set "checksum=%%a"
	set "checksum=!checksum: =!"
	set "checksum=!checksum:~0,32!"
	set "checksum=!checksum:~0,32!"

	rem "写到文件"
	echo 文件名称:%%~nxf >> !retFname!
	echo 文件大小:!sizeFormatted! >> !retFname!
	echo MD5:!checksum! >> !retFname!
	echo. >> !retFname!
	rem "打印到屏幕"
	echo MD5:!checksum!
	echo.
)

echo MD5 计算完毕 输出文件:!retFname!.
pause

goto :eof

rem "==========单个文件MD5"
:fileMD5
rem "单个文件就不要前置了"
echo. > !retFname!

for %%f in ("%filePath%") do (
	rem "获取文件大小"
	set "size=%%~zf"
	set "Tsize=%%~zf"
	call :calSize
	
	rem Calculate MD5 checksum and convert to uppercase
	for /f "tokens=*" %%A in ('certutil -hashfile "%filePath%" MD5 ^| find /i /v "certutil" ^| find /i /v "MD5"') do set "checksum=%%A"
	set "checksum=!checksum: =!"
	set "checksum=!checksum:~0,32!"
	set "checksum=!checksum:~0,32!"

	rem "写到文件"
	echo 文件名称:%%~nxf >> !retFname!
	echo 文件大小:!sizeFormatted! >> !retFname!
	echo MD5:!checksum! >> !retFname!
	echo. >> !retFname!
	rem "打印到屏幕"
	echo MD5:!checksum!
	echo.
)

echo MD5 计算完毕 输出文件:!retFname!.
pause

goto :eof

rem ""==========独立出核心计算部分。用于支持拖拉拽。拽了单个文件不在后缀里面"
:calSize
set "Fsize="
rem "添加千位符"
call :format
rem "Powershell 脚本需要签名或者改策略,bat脚本最多32位整数计算(2GB),我TM。"
set "sizeLow=!size:~-8!" 
set "sizeHigh=!size:~0,-8!"
if "!sizeHigh!"=="" (
set /a "tSizeHigh=0"
) else (set /a "tSizeHigh=!sizeHigh!")
call :removeZeros !sizeLow!
set /a "tSizeLow=!outputStr!" 
rem     echo 文件大小:!Fsize! 字节  rem "调试的时候输出备份"
rem     echo 字符串 高位:!sizeHigh! 低位:!sizeLow!
rem     echo 整数变量 高位:!tSizeHigh! 低位:!tSizeLow!
rem "转换KB 高位"
set /a "HsizeKB=!tSizeHigh! * 97656"
set /a "HsizeB=!tSizeHigh! * 256"
rem "转换KB 低位"
set /a "LsizeKB=!tSizeLow! / 1024"
set /a "LsizeB=!tSizeLow! %% 1024"
rem "合并结果 并且进一步缩减"
set /a "sizeKB=!HsizeKB! + !LsizeKB!"
set /a "sizeB=!HsizeB! + !LsizeB!"
set /a "sizeKB_t=!sizeB! / 1024"
set /a "sizeB=!sizeB! %% 1024"
set /a "sizeKB=!sizeKB! + !sizeKB_t!"

rem     echo 整数变量 KB:!sizeKB! B:!sizeB!
rem "继续转换成MB MB的余数"
set /a "sizeMB=!sizeKB! / 1024"
set /a "sizeMB_KB=!sizeKB! %% 1024"
if !sizeMB! LSS 972 (
	rem "小于972MB(0.95GB) 用MB 只有整数运算,所以*100 再除获取小数部分 几B的影响忽略不计" 
	if !sizeMB! LSS 1 (
		rem "强迫症还是想把KB加回来"
		set "sizeFormatted=!sizeKB! KB (!Fsize! 字节)"
	) else (
		set /a "sizeMB_KB_10=!sizeMB_KB! * 100 / 1024"
		rem "小于10前面补0"
		if !sizeMB_KB_10! LSS 10 set "sizeMB_KB_10=0!sizeMB_KB_10!"
		set "sizeFormatted=!sizeMB!.!sizeMB_KB_10! MB (!Fsize! 字节)"
	)
) else (
rem "大于972MB 开始用GB显示。这样才会有0.95GB"
set /a "sizeGB=!sizeMB! / 1024"
set /a "sizeGB_MB=!sizeMB! %% 1024"
set /a "sizeGB_MB_10=!sizeGB_MB! * 100 / 1024"
rem "小于10前面补0"
if !sizeGB_MB_10! LSS 10 set "sizeGB_MB_10=0!sizeGB_MB_10!"
set "sizeFormatted=!sizeGB!.!sizeGB_MB_10! GB (!Fsize! 字节)"
)
echo 文件大小:!sizeFormatted!
goto :eof

rem "==========添加千位符"
:format
if "!Tsize!"=="" goto endFormat
set "lastThree=!Tsize:~-3!"
set "Tsize=!Tsize:~0,-3!"
if defined Fsize (
	set "Fsize=!lastThree!,!Fsize!"
) else (
	set "Fsize=!lastThree!"
)
goto format
:endFormat
goto :eof

rem ""==========字符串移除前置0"
:removeZeros
set "inputStr=%~1"
set "outputStr=%inputStr%"
:loop
if "!outputStr:~0,1!"=="0" (
	set "outputStr=!outputStr:~1!"
	goto loop
)
if "%outputStr%"=="" set "outputStr=0"
goto :eof

效果如动图。

实际上这个MD5脚本还应该进一步完善,比如支持同时拖拽多个文件。但是好像需求不大,所以我选择咕咕咕。

  • KN 觉得很赞

记录电报 Markdown

加粗
删除线
斜体
剧透
还可以叠加使用。但是我不知道应该怎么叠加 以下代码是失败的
__ ** 加粗 ** __

  • KN 觉得很赞
Yoooo-LXH 更改标题为「记录一些 自己用到的代码 2025-0224

趁没人回复,再再再留一楼备用

解包提取CG、视频、音频

  1. GARbro-v1.5.44.2904
    支持的引擎-列表 https://morkt.github.io/GARbro/supported.html
    可以尝试对可执行文件右键,部分有写引擎信息。
  • KN 觉得很赞
Yoooo-LXH 更改标题为「记录一些 自己用到的代码 2025-0226更新工具集、代码样例等
19 天 后

图片盗链提醒

微博图床、QQ空间,都对外链做了限制。旧的记录可以尝试使用添加Header内容来急救备份。
微博:

.*://[^>]{1,5}.sinaimg.cn/.*  
Referer: weibo.com

QQ空间

.*://[^>]{1,5}.qpic.cn/.*
referrer:never