1iJaCk icon

hide_meta.bat

1iJaCk | PRO | 06/23/17 07:23:32 AM UTC | 0 ⭐ | 218 👁️ | Never ⏰ | []
Batch |

13.98 KB

|

None

|

0 👍

/

0 👎

:: by JaCk | Release 08/13/2017 | https://pastebin.com/QnyiHWWq | hide_meta.bat ---- Hides "Meta" files and directories Recursively.  
::  -- "Meta" items are dictated by [func_process_meta_files]
 
:: Changelog
:: * 08/13/2017 - Changed filtering to findstr instead off for loop to speed up processing.  Rewrote hide bunctions to support more funky dunky chark-ters
:: * 07/04/2017 - Fixed issue when for .actors directory not being processed, needs to be set as an extension
:: * 07/04/2017 - Fixed issue when entering Double Quoted entry into prompt
:: * 07/04/2017 - Changed hide output msg to be slightly cleaner -imo
:: * 07/04/2017 - Changed Prompted help msg to be slightly clearer
:: + 07/04/2017 - Added "extrathumbs" to the meta list
:: + 06/22/2017 - Intial Release
:::::::::::::::::::::::::::::::::::::::
 
::
:: JK'D Blame-Game Agreement 1.0b, "Finger-Pointer Edition", written by JaCk
::
::: No Warranty, No Guarantee, No Support, AS-IS
:::
::: USE AT YOUR OWN RISK 
::: By sheer discretion and without notification, JaCk, retains the all rights, including exemptions, revocation of exemptions of this agreement!
:::
::: By Running this script or ANY portion of it's, this script's, contents, you agree to the following:
::: - that you fully understand what these commands, expressions, functions, and/or script(s) or portions of script(s) do
::: - that you take responsibility for any actions, damages, physical losses, intellectual property losses, and/or losses of ANY kind
::: - that you take responsibility for any revenue, profits, physical gains, intellectual property gains, and/or gains of ANY kind
::: - that you DO NOT seek compensation of any kind, monies or otherwise, in ANY FORM, from previous, current and future parties; not limited to:
:::    -- anyone
:::    -- everyone
:::    -- it's author(s) 
:::    -- it's contributor(s)
:::    -- any beneficiaries
:::    -- users
:::    -- distributors
::
:::::::::::::::::::::::::::::::::::::::
 
:::::::::::::::::::::::::::::::::::::::
::
:: - Most Functions are sourced from JaCks "AVScraper.bat" which were sourced from "AVDumpme.bat"
:: -- On that note, this is not the most efficient script, if you do not like that write your own.
:: 
:: - Concepts sourced from a recollection (JaCk's brain dump) of 
:: -- methods found stackexchange site(s) by various users customized with JaCk's taste
::             ::    ::
:::::::::::::::::::::::::::::::::::::::
 
@echo off && setlocal EnableDelayedExpansion
rem Assigning Script Params to a variable
set "params_main_script=%*"
 
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 ::::::                                                                 ::::::
  ::::                        User Settings/Input                        ::::
 ::::::                                                                 ::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 
rem Hardcoded Path - bypassed only by passing in a parameter, default is NotSet
set "var_process_dir="
 
 
rem UTF8 support 
rem  Sets the console to be able to process utf8 character sets
rem  Disable if you encounter weird problems
rem  - Default: true
rem  - Boolean: Enable  set to any of the following [yes/true/1]
rem  - Boolean: Disable set to any of the following [no/false/0]
set "_flag_utf8_support=true"
 
rem Hide any gif that matches everything except extension
set "hm_filer_name_matches_gif=true"
 
rem Hide File/Directory filters -- file/folder endings
set "hm_filer_name_ending=meta\> thumb\> thumbnail\> thumbnails\> extrafanart\> extrathumbs\> screenshots\> screenshot\> landscape\> backdrop\> clearart\> poster\> folder\> banner\> fanart\> disc\> logo\> palette\>"
 
rem Hide File/Directory filters --- Global match -- CAUTION - filters out when matched anywhere in dirtree/filename
set "hm_filer_name_wany=archos"
 
rem Hide File/Directory filters --- Extension
set "hm_filer_name_ext=.json\> .nfo\> .actors\> .description\> .xml\>"
 
rem filter exclusions 
set "hm_filter_ignore_items=.\-.Manga. .\-.Sound. Relation. .\\meta\\."
 
::::  :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::       -~-~-~-~-~-~-~-~-~-~-~-~-~-  ###  -~-~-~-~-~-~-~-~-~-~-~-~-~-       ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  ::::
 
 
 
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 ::::::                                                                 ::::::
  ::::                         Doo-Daads-Whatnots                        ::::
  ::::                      Errochecking-Prompts-Misc                    ::::
 ::::::                                                                 ::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 
rem Process Booleans
call :func_set_flag_booleans
 
 
rem UTF8 Support
if defined _flag_utf8_support (
    call :func_char_encode_init
)
 
 
rem When Params are provided, ass-u-me that it is a Comma/QuotedSpaced/Semi-Colon separated list.
rem  Even a "list" containing 1 item
rem  Does not matter if items at quoted or not
if defined params_main_script (
    set "var_process_dir=!params_main_script!"
)
 
 
rem this help is only printed when the script is run without parameters
if not defined var_process_dir (
    echo/&echo/&echo/&echo/&echo/&echo/&echo/&echo/
    echo/    Info: %~n0 Usage:
    echo/      %~nx0 [Base Directory]
    echo/
    echo/     Notes: 
    echo/      ~ Quotes are optional
    echo/      ~ Prompted input or passing parameters work the same way
    echo/      ~ Directory Lists are accepted
    echo/      ~ Windows environment variables also ok
    echo/
    echo/     Examples:
    echo/       %~n0     C:\My Media\My Sub Dir
    echo/       %~nx0 "C:\My Media\My Sub Dir","M:\My Personal Media\Home Videos",'S:\Hidden\Tr0n Spotting'
    echo/       %~nx0 %Userprofile%\Videos
    echo/
)
 
 
rem ask user input when parameters are missing
if not defined var_process_dir (
    echo/&echo/
    set "input=!cd!"
    echo/ -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
    echo/
    echo/      Input: Enter Base Directory or
    echo/            a list of Directories to process
    echo/          
    echo/      [Default: !input!]
    echo/
    echo/  -~-~- -~-~-~-~-~-~-~- -~-~-
    set /p "input=Input > "
    echo/ -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
    set "var_process_dir=!input!"
    set "input="
)
 
 
rem Process the input
rem   when surrounded by doublequotes, strip them as they are added in the next loop
if defined var_process_dir if "!var_process_dir:~0,1!!var_process_dir:~-1,1!" equ """" (
    set "var_process_dir=!var_process_dir:~1,-1!"
)
 
rem append gif to the exlusion list as needed
if defined hm_filer_name_matches_gif set hm_filter_ignore_items=.gif$ !hm_filter_ignore_items!
 
:: rem   Converting single quotes to double quotes
:: rem   Stripping double sets of double quotes to a single set
:: rem   Converting semi-colons to commas
:: REM set "var_process_dir=!var_process_dir:'="!"
:: REM set "var_process_dir=!var_process_dir:""="!"
:: REM set "var_process_dir=!var_process_dir:""="!"
:: REM set "var_process_dir=!var_process_dir:;=,!"
 
 
rem Converts commas to Quoted Spaces and recurses through the list
if defined var_process_dir (
    for %%a in ("!var_process_dir:,= !") do (
        call :func_process_meta_files "%%~a"
    )
    set "var_process_dir="
) else (
    echo/    Info: No input recieved, exiting...
)
 
if defined hm_cntr_hide (
    echo/    Info: Total items hidden: !hm_cntr_hide!
    set "hm_cntr_hide="
)
 
rem UTF8 Support
if defined _flag_utf8_support (
    call :func_char_encode_deinit
    set "_flag_utf8_support="
)
 
 
rem Scrub-de-dam
if defined params_main_script (
    set "params_main_script="
)
 
 
::::  :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::       -~-~-~-~-~-~-~-~-~-~-~-~-~-  ###  -~-~-~-~-~-~-~-~-~-~-~-~-~-       ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  ::::
 
 
 
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 ::::::                                                                 ::::::
  ::::                             Bunctions                             ::::
 ::::::                                                                 ::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
goto :eof
 
:::::::::::::::: :::: :::::::::::::::::
rem International-love (utf8 only, otherwise, "get away from me you different, unclassified freak.  Wow, 'non-standards' really crep me out")
rem  Above is a joke, No, I'm not going to explain it   ||  print Hello effing PC world && echo yes, pun intended
:func_char_encode_init
for /f "tokens=2 delims=:" %%c in ('chcp') do set "chcp_orig=%%c"
 
chcp 65001 2>nul 1>nul 
if not !errorlevel! equ 0 (
    echo/    ERROR: CHCP: UTF8 Support unavailible
    set "_flag_chcp_errored=true"
)
 
goto :eof
::::::::::::::::::  :::::::::::::::::::
 
 
 
:::::::::::::::: :::: :::::::::::::::::
rem Well it was a phan vacation, time to get back to the grind... You.. You... You UTF8 you. *teehee* *giggle*
:func_char_encode_deinit
if not defined _flag_chcp_errored (
    chcp !chcp_orig! 1>nul
) else (
    set "_flag_chcp_errored="
)
 
goto :eof
::::::::::::::::::  :::::::::::::::::::
 
 
 
:::::::::::::::: :::: :::::::::::::::::
rem Hide any items recursively
rem  Usage - call func_hide_item "C:\myfolder\My file.ext"
rem  Usage - call func_hide_item "C:\myfolder\My Subfolder"
:func_hide_item
set "params_hide_item=%*"
set "params_hide_item=!params_hide_item:"=!"
 
rem Check item accessiblity, leave function on error
if not exist "!params_hide_item!" (
    echo/    Error: Hide: Unable to locate "!params_hide_item!"
    goto :eof
)
 
rem Check item hidden attribute, hide when needed
dir /b /o /a:h "!params_hide_item!" 2>nul 1>nul
if not !errorlevel! equ 0 (
    echo/    Info: Hiding:  "!params_hide_item!"
    call attrib +H /S /D /L "!params_hide_item!"
)
 
set "params_hide_item="
goto :eof
::::::::::::::::::  :::::::::::::::::::
 
 
 
:::::::::::::::: :::: :::::::::::::::::
rem Hide any items recursively
rem  Usage - call func_hide_item "C:\myfolder\My file.ext"
rem  Usage - call func_hide_item "C:\myfolder\My Subfolder"
:func_hide_pitem
rem Check item accessiblity, leave function on error
if not exist "%~1" (
    echo/    Error: Hide: Unable to locate "%~1"
    goto :eof
)
 
rem Check item hidden attribute, hide when needed
dir /b /o /a:h "%~1" 2>nul 1>nul
if not !errorlevel! equ 0 (
    echo/    Info: Hiding:  "%~nx1"
    call attrib +H /S /D /L "%~1"
    set /a "hm_cntr_hide+=1"
)
 
goto :eof
::::::::::::::::::  :::::::::::::::::::
 
 
 
:::::::::::::::: :::: :::::::::::::::::
rem Please note, when modifying the block below
rem  [%%~xz] is file extension
rem  [%%~nz] is file/directory name
rem  [%%~fz] is full file/directory name with path
 
rem These two lines look for a specific string in the file/directory name.  When found [error state is 0] calls the hide function
rem  echo "%%~nz" | findstr /i "archos" 2>nul 1>nul
rem  if !errorlevel! equ 0 call :func_hide_item "%%~fz"
REM set "params_process_meta_files=%*"
REM set "params_process_meta_files=!params_process_meta_files:"=!"
REM echo/    Info: Hide: Prep: "!params_process_meta_files!"
REM 'dir /s /b /o:-n /a:-h "!params_process_meta_files!" 2^>nul ^| findstr /r /i /v ".gif$  .\-.Manga. .\-.Sound. Relation. .\\meta\\." 2^>nul'
:func_process_meta_files
 
if not exist "%~1" (
    echo/    Error: Unable to access "%~1"
    echo/    Error: Unable to process "%~1"
    goto :eof
)
 
echo/
echo/    Info: Hide: Prep: "%~1"
 
for /f "tokens=1* delims=" %%z in (
    'dir /s /b /o:-n /a:-h "%~1" 2^>nul ^| findstr /r /i /v "!hm_filter_ignore_items!" 2^>nul'
) do (
    if defined hm_filer_name_matches_gif if exist "%%~dpnz.gif" call :func_hide_pitem "%%~dpnz.gif"
 
    echo/"%%~nz" | findstr /r /i "!hm_filer_name_wany! !hm_filer_name_ending!" 2>nul 1>nul
    if !errorlevel! equ 0 call :func_hide_pitem "%%~fz"
    
    echo/"%%~xz" | findstr /r /i "!hm_filer_name_ext!" 2>nul 1>nul
    if !errorlevel! equ 0 call :func_hide_pitem "%%~fz"
)
 
goto :eof
::::::::::::::::::  :::::::::::::::::::
 
 
:::::::::::::::: :::: :::::::::::::::::
rem For every variable that starts with [_flag_], check for true values and set/unset accordingly
:func_set_flag_booleans
for /f "tokens=1,* delims==" %%v in ('set _flag_') do (
    set "_fvar_value=%%w"
 
              if "!_fvar_value:~0,1!" equ "1" ( set "%%v=true"
    ) else if /i "!_fvar_value:~0,1!" equ "y" ( set "%%v=true"
    ) else if /i "!_fvar_value:~0,1!" equ "t" ( set "%%v=true"
    ) else set "%%v="
)
set "_fvar_value="
 
goto :eof
::::::::::::::::::  :::::::::::::::::::
 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 ::::::        ::::::        ::::::        ::::::        ::::::        :::::: 
  ::::                        ::::          ::::                        ::::  
   ::      -~-~-~-~-~-~-~      ::    ###     ::      -~-~-~-~-~-~-~      ::   
  ::::                        ::::          ::::                        ::::  
 ::::::        ::::::        ::::::        ::::::        ::::::        :::::: 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎