@Echo Off
Set WD=%~1
If Exist BIN\Iconv.exe (Set BIN=BIN) Else Set BIN=%WD%\BIN
If Not Exist %BIN%\Iconv.exe (
  Echo  㦥 䠩  %~1!
  Echo.
  Echo 믮 ࢠ
pause
GoTo :EOF
)

Echo ࠡ⪠  %~1
Echo.

::   
If Exist Temp\Log\Before (
Set After=Temp\Log\After
Set Before=Temp\Log\Before
) Else (
Set After=Z-Del_Files\After
Set Before=Z-Del_Files\Before
)
If Not Exist %After% MD %After%
If Not Exist %After%\..\Addons MD %After%\..\Addons
If Exist %WD%\Backup RD /S /Q %WD%\Backup
MD %WD%\Backup
If Exist %WD%\Logs RD /S /Q %WD%\Logs
MD %WD%\Logs
If Exist %WD%\Out RD /S /Q %WD%\Out
MD %WD%\Out
If Exist %WD%\Temp RD /S /Q %WD%\Temp
MD %WD%\Temp

::   Files_UTF  Files_ANSI   
For /F "UseBackQ Delims=" %%I In (`Dir %WD%\Files_* /B /ON 2^>nul`) Do Call :CLeanFiles %%~I
FindStr /L /I /V /G:%WD%\Files_UTF %WD%\Files_ANSI | Sort >%WD%\File1
Move %WD%\File1 %WD%\Files_ANSI

::       Backup  Files_UTF  Files_ANSI
For /F "Delims=" %%I In (%WD%\Files_UTF) Do Call :CopyFiles %%~I
For /F "Delims=" %%I In (%WD%\Files_ANSI) Do Call :CopyFiles %%~I

::    
If Exist %WD%\PackFiles Del %WD%\PackFiles >nul
For /F "UseBackQ Delims=" %%I In (`Dir %WD%\Backup\*.??_ /B /ON 2^>nul`) Do Echo %%~I>>%WD%\PackFiles

::      
If Exist %WD%\PackFiles (
  Echo ᯠ 㯠 䠩  㤠 ਣ
  Echo.
  For /F "Delims=" %%I In (%WD%\PackFiles) Do (
    Extrac32 /L %WD%\Backup /E %WD%\Backup\%%~I >nul
    Del %WD%\Backup\%%~I >nul
  )
)

::    Files_UTF
Set CP=utf-8
For /F "Delims=" %%I In (%WD%\Files_UTF) Do (
  Echo ࠡ⪠ 䠩 %%I
  If Exist %WD%\Backup\%%~I (
    %BIN%\Iconv.exe -c -f utf-16LE -t %CP% %WD%\Backup\%%~I >%WD%\Temp\%%~I
    Call :ModifyFiles %%~I
    %BIN%\Iconv.exe -c -f %CP% -t utf-16LE %WD%\Temp\%%~I2 >%WD%\Out\%%~I
  ) Else Call :NotFiles %%~I
)

::    Files_ANSI
Set CP=cp866
For /F "Delims=" %%I In (%WD%\Files_ANSI) Do (
  Echo ࠡ⪠ 䠩 %%I
  If Exist %WD%\Backup\%%~I (
    Copy /Y %WD%\Backup\%%~I %WD%\Temp\ >nul
    Call :ModifyFiles %%~I
    Copy /Y %WD%\Temp\%%~I2 %WD%\Out\%%~I >nul
  ) Else Call :NotFiles %%~I
)

::      
If Exist %WD%\PackFiles (
  Echo.
  Echo  䠩
  For /F "UseBackQ Delims=" %%I In (`Dir %WD%\Out /B /ON 2^>nul`) Do Call :PackFiles %%~I
)

Echo ஢ 䠩  㤠 ६ 
::   
XCopy %WD%\Out\*.* %I386%\ /Q /R /Y >nul
XCopy %WD%\Out\*.* %After%\ /Q /R /Y >nul
Copy /Y %WD%\Logs\DelStrings__in_all_files.log %After%\..\%~1.log >nul
If Exist %WD%\Logs\!Errors.log Copy /Y %WD%\Logs\!Errors.log %After%\..\%~1_Errors.log >nul
::   
rem If Exist %WD%\Logs RD /S /Q %WD%\Logs
If Exist %WD%\Backup RD /S /Q %WD%\Backup
If Exist %WD%\Out RD /S /Q %WD%\Out
If Exist %WD%\Temp RD /S /Q %WD%\Temp
If Exist %WD%\PackFiles Del %WD%\PackFiles >nul
Echo 믮  %~1 襭!
GoTo :EOF

:CLeanFiles
::  
Set I=%~1
FindStr /L /I /V /G:%WD%\BlockFiles %WD%\%I% | Sort >%WD%\File1
If Exist %WD%\DelOC.lst (FindStr /I /V /G:%WD%\DelOC.lst %WD%\File1 | Sort >%WD%\%I%) Else Move %WD%\File1 %WD%\%I%
Goto :EOF

:CopyFiles
::  
Set I=%~1
If Exist %I386%\%I:~0,-1%? Copy %I386%\%I:~0,-1%? %WD%\Backup\ >nul
Goto :EOF

:ModifyFiles
::     
Set I=%~1
Echo -------------------------------------------------------------------------------->>%WD%\Logs\DelStrings__in_all_files.log
Echo %I% -      :>>%WD%\Logs\DelStrings__in_all_files.log
Echo -------------------------------------------------------------------------------->>%WD%\Logs\DelStrings__in_all_files.log
FindStr /L /I /V /G:%WD%\DelStrings %WD%\Temp\%I% >%WD%\Temp\%I%2
FindStr /L /I /N /G:%WD%\DelStrings %WD%\Temp\%I% | %BIN%\Iconv.exe -c -f %CP% -t cp1251 >>%WD%\Logs\DelStrings_%I%.log
Type %WD%\Logs\DelStrings_%I%.log >>%WD%\Logs\DelStrings__in_all_files.log
If Exist %WD%\%I%.ADD (
  %BIN%\Iconv.exe -c -f cp1251 -t %CP% %WD%\%I%.ADD >%WD%\Temp\%I%.ADD
  Type %WD%\Temp\%I%.ADD >>%WD%\Temp\%I%2
)
Goto :EOF

:NotFiles
::   -   
Set I=%~1
If Not Exist %Before%\%I:~0,-1%? (
Echo 訡: 䠩  %I%     ਡ⨢!
Echo :   %I%     !>>%WD%\Logs\!Errors.log
)
If Not Exist %WD%\Temp\%I% (
  Echo   %I%     ࠡ祩 !
  Echo   %I%      !>>%WD%\Logs\!Errors.log
  If Exist %Before%\%I:~0,-1%? (
    Echo  䠩  㤠      ⥣樨.
    Echo ஢ ᯨ᪨ 㤠 DelDrv.lst, DelOC.lst  䠩 Finish .
    Echo          .>>%WD%\Logs\!Errors.log
    Echo    DelDrv.lst, DelOC.lst   Finish .>>%WD%\Logs\!Errors.log
  )
)
Echo -------------------------------------------------------------------------------->>%WD%\Logs\!Errors.log
Echo.
Goto :EOF

:PackFiles
::  
Set I=%~1
For /F "Delims=" %%J In (%WD%\PackFiles) Do If /I %%~J==%I:~0,-1%_ (
  MakeCab /D CompressionMemory=21 /D CompressionType=LZX /L %WD%\Out %WD%\Out\%I% %I:~0,-1%_ >nul
  Del /F /Q %WD%\Out\%I% >nul
)
Goto :EOF