这是精灵包程序第三版,在第一版和第二版的基础上做了改进,改回了最初的刷屏界面,最大程度地做了优化,但是还是可能会出错,毕竟有些创作者的文件夹结构不是很对,如果同时复制很多精灵包,最好的办法是新建一个文件夹,然后进行重复运行程序直到character里全是.gift,monika里是单字母文件夹,thumbs是图片,场景没有那么多注意事项只需要确保没有多余的与场景无关的rpy文件即可,之后把整理好的文件夹内容用程序在进行一遍复制省去了找取步骤,这一遍会很快,因为可能会被视为风险应用这里直接放代码
"""
@echo off
setlocal EnableExtensions EnableDelayedExpansion
echo.
echo _ _ _
echo (_) ^| ^| ^|
echo ___ _ __ _ __ ^| ^| ___ _ __ __ _ __^| ^| __
echo / ^| ' ^| '^| ^| __/ _ \ '_ \ / ` ^|/ __^| ^|/ /
echo _ \ ^|) ^| ^| ^| ^| ^|^| / ^|) ^| (^| ^| (^| ^<
echo ^|/ ./^|^| ^|^|__^| ./ _,^|___^|^|_\
echo ^| ^| ^| ^|
echo ^|^| ^|^|
echo.
echo 欢迎使用精灵包小工具
echo author:Enterdunk
echo 当前脚本所在目录为:%dp0
echo 将以当前目录作为根目录
echo.
echo 请选择安装类型:
echo 1. 仅安装精灵包
echo 2. 仅安装场景
echo 3. 同时安装精灵包和场景
set /p install_type=请输入选项数字并回车:
set "install_sprite=false"
set "install_scene=false"
if "%install_type%"=="1" (
set "install_sprite=true"
) else if "%install_type%"=="2" (
set "install_scene=true"
) else if "%install_type%"=="3" (
set "install_sprite=true"
set "install_scene=true"
) else (
echo 输入无效,脚本退出。
pause
goto end
)
set "BATCH_DIR=%dp0"
set "INPUT_DIR=%BATCH_DIR%input"
set "has_merged=false"
set "TARGET_DIR=%dp0"
if "%TARGET_DIR:~-1%"=="\" set "TARGET_DIR=%TARGET_DIR:0,-1%"
set "TEST_FILE=%TARGET_DIR%\test.tmp"
(echo test > "%TEST_FILE%") 2>nul || (
echo 权限不足,无法在当前目录创建文件
pause
goto end
)
del "%TEST_FILE%" 2>nul
if not exist "%INPUT_DIR%" mkdir "%INPUT_DIR%" >nul 2>&1
start "" "%INPUT_DIR%" >nul 2>&1
pause >nul
dir /a /b "%INPUT_DIR%*" >nul 2>&1 || goto end
if "%install_sprite%" == "true" (
if not exist "%TARGET_DIR%\characters" mkdir "%TARGET_DIR%\characters" >nul 2>&1
if not exist "%TARGET_DIR%\game" mkdir "%TARGET_DIR%\game" >nul 2>&1
if not exist "%TARGET_DIR%\game\mod_assets" mkdir "%TARGET_DIR%\game\mod_assets" >nul 2>&1
if not exist "%TARGET_DIR%\game\mod_assets\thumbs" mkdir "%TARGET_DIR%\game\mod_assets\thumbs" >nul 2>&1
if not exist "%TARGET_DIR%\game\mod_assets\monika" mkdir "%TARGET_DIR%\game\mod_assets\monika" >nul 2>&1
)
if "%install_scene%"=="true" (
if not exist "%TARGET_DIR%\game\mod_assets\location" mkdir "%TARGET_DIR%\game\mod_assets\location" >nul 2>&1
if not exist "%TARGET_DIR%\game\Submods" mkdir "%TARGET_DIR%\game\Submods" >nul 2>&1
if not exist "%TARGET_DIR%\game\Submods\location_selector" mkdir "%TARGET_DIR%\game\Submods\location_selector" >nul 2>&1
if not exist "%TARGET_DIR%\game\Submods\location_selector\Locations" mkdir "%TARGET_DIR%\game\Submods\location_selector\Locations" >nul 2>&1
)
if "%install_sprite%"=="true" (
for /d /r "%INPUT_DIR%" %%D in (thumbs) do (
echo.
echo ==============================
echo 源文件夹:%%D
echo 正在复制thumbs文件夹...
xcopy "%%D*" "%TARGET_DIR%\game\mod_assets\thumbs\" /E /Y /I /Q >nul 2>nul && (
set "has_merged=true"
echo thumbs文件夹已成功复制
)
echo ==============================
)
for /d /r "%INPUT_DIR%" %%D in (monika) do (
echo.
echo ==============================
echo 源文件夹:%%D
echo 正在复制monika文件夹...
xcopy "%%D*" "%TARGET_DIR%\game\mod_assets\monika\" /E /Y /I /Q >nul 2>nul && (
set "has_merged=true"
echo monika文件夹已成功复制
)
echo ==============================
)
for /r "%INPUT_DIR%" %%F in (*.gift) do (
echo.
echo ==============================
echo 源文件夹:%%dpF
echo 正在复制gift文件:%%nxF ...
copy /Y "%%F" "%TARGET_DIR%\characters\" >nul 2>nul && (
set "has_merged=true"
echo %%nxF 已成功复制
)
echo ==============================
)
)
if "%install_scene%"=="true" (
set "location_found=false"
for /d /r "%INPUT_DIR%" %%D in (location) do (
echo.
echo ==============================
echo 源文件夹:%%D
echo 正在复制location文件夹...
xcopy "%%D*" "%TARGET_DIR%\game\mod_assets\location\" /E /Y /I /Q >nul 2>nul && (
set "has_merged=true"
set "location_found=true"
echo location文件夹已成功复制
)
echo ==============================
)
if "!location_found!"=="false" (
echo 未找到location文件夹
echo 寻找带room的.png文件
for /r "%INPUT_DIR%" %%F in (room.png) do (
set "src_folder=%%dpF"
set "src_folder=!src_folder:0,-1!"
for %%G in ("!src_folder!") do (
set "parent_folder=%%nxG"
echo.
echo ==============================
echo 源文件夹:!src_folder!
echo 正在复制包含room图片的整个文件夹...
xcopy "!src_folder!*" "%TARGET_DIR%\game\mod_assets\location!parent_folder!\" /E /Y /I /Q >nul 2>nul && (
set "has_merged=true"
echo 包含room图片的文件夹已成功复制
)
echo ==============================
)
)
)
if "!location_found!"=="false" (
echo 未找到location文件夹
echo 寻找带day的.png文件
for /r "%INPUT_DIR%" %%F in (day.png) do (
set "src_folder=%%dpF"
set "src_folder=!src_folder:0,-1!"
for %%G in ("!src_folder!") do (
set "parent_folder=%%nxG"
echo.
echo ==============================
echo 源文件夹:!src_folder!
echo 正在复制包含day图片的整个文件夹...
xcopy "!src_folder!*" "%TARGET_DIR%\game\mod_assets\location!parent_folder!\" /E /Y /I /Q >nul 2>nul && (
set "has_merged=true"
echo 包含day图片的文件夹已成功复制
)
echo ==============================
)
)
)
for /r "%INPUT_DIR%" %%F in (*.rpy) do (
echo.
echo ==============================
echo 源文件夹:%%dpF
echo 正在复制rpy文件:%%nxF ...
copy /Y "%%F" "%TARGET_DIR%\game\Submods\location_selector\Locations\" >nul 2>nul && (
set "has_merged=true"
echo %%nxF 已成功复制
)
echo ==============================
)
)
echo 所有文件夹均已复制。
echo 正在清理input文件夹...
rmdir /s /q "%INPUT_DIR%"
echo 清理完成。
set /p do_check=是否执行文件夹规范检查?(y/n):
if /i "%do_check%"=="y" call :CheckFolders
echo 按任意键退出。
pause >nul
goto end
:CheckFolders
setlocal EnableDelayedExpansion
echo.
echo ==============================
echo 正在执行文件夹规范检查
echo 显示错误文件夹的内容
echo ==============================
set has_issue=false
set MONIKA_DIR=%TARGET_DIR%\game\mod_assets\monika
if exist "%MONIKA_DIR%" (
for /f "delims=" %%F in ('dir /b /a-d "%MONIKA_DIR%" 2^>nul') do (
echo [不合规] monika 目录下存在文件:%%F
set has_issue=true
)
for /f "delims=" %%D in ('dir /b /ad "%MONIKA_DIR%" 2^>nul') do (
set fname=%%D
echo !fname!| findstr /R "^[A-Za-z]$" >nul || (
echo [不合规] monika 子文件夹下不符合规范文件:!fname!
set has_issue=true
)
)
)
call :__CheckImages "%TARGET_DIR%\game\mod_assets\thumbs" thumbs
set CHAR_DIR=%TARGET_DIR%\characters
if exist "%CHAR_DIR%" (
for /f "delims=" %%I in ('dir /b /a "%CHAR_DIR%" 2^>nul') do (
if exist "%CHAR_DIR%\%%I\" (
echo [不合规] characters 存在子文件夹:%%I
set has_issue=true
) else (
if /i not "%%xI"==".gift" (
echo [不合规] characters 存在非 .gift 文件:%%I
set has_issue=true
)
)
)
)
set LOC_RPY_DIR=%TARGET_DIR%\game\Submods\location_selector\Locations
if exist "%LOC_RPY_DIR%" (
for /f "delims=" %%I in ('dir /b /a "%LOC_RPY_DIR%" 2^>nul') do (
if exist "%LOC_RPY_DIR%\%%I\" (
echo [不合规] Locations 存在子文件夹:%%I
set has_issue=true
) else (
if /i not "%%xI"==".rpy" (
echo [不合规] Locations 存在非 .rpy 文件:%%I
set has_issue=true
)
)
)
)
if "!has_issue!"=="false" (
echo 所有检查目录均符合规范
) else (
echo 以上为不合规项目
)
echo ==============================
endlocal
exit /b
:__CheckImages
set CHK_DIR=%1
set CHK_TAG=%2
if not exist "%CHK_DIR%" exit /b
for /f "delims=" %%I in ('dir /b /a "%CHK_DIR%" 2^>nul') do (
if exist "%CHK_DIR%\%%I\" (
echo [不合规] %CHK_TAG% 存在子文件夹:%%I
set has_issue=true
) else (
set ext=%%xI
if /i not "!ext!"==".png" if /i not "!ext!"==".jpg" if /i not "!ext!"==".jpeg" if /i not "!ext!"==".gif" if /i not "!ext!"==".webp" (
echo [不合规] %CHK_TAG% 非图片文件:%%I
set has_issue=true
)
)
)
exit /b
:end
exit /b
"""
复制这段代码,然后最好用notepad新建个文件,编码字符改为GBK或者GB2312粘贴进去,另存桌面后缀改为.bat放到DDlC.exe所在目录运行即可

运行时必须是这个界面,不然就是步骤错了