Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @echo off
- :: setting empty variables for use.
- set n1=
- set name=
- set rname=
- set namectl=
- :: Creating Text file, for pasting into array
- echo [ > list.txt
- :: Creates Text file, for tracking which files get renamed. Currently removes 'Spaces' & ' - '
- echo renamed files > Rlist.txt
- :: Loops can be extended easily to include any file time
- :: ~nx is 'name' & 'extension' for the vairable. without, the full variable would be 'c:\examplefolder\Examplename.jpg', and with it is 'Examplename.jpg'
- for %%t in (*.jpg) do call :Deepend %%~nxt
- for %%k in (*.png) do call :Deepend %%~nxk
- :: End of list
- echo ]>> list.txt
- goto :eof
- :: Prime & reseting of key variables between loops
- :Deepend
- set n1=/
- set tep=%1^/
- set name=%1
- set namectl=n
- :loop
- :: Testing for 'problem' characters in a subloop setup and either inserting a special character or editing it out
- if "%tep:~0,1%"==" " goto :edit
- if ^%tep:~0,1%==^/ goto :Last
- :: unneeded when escape characters arent needed. -if ^%tep:~0,1%==^. goto :Check
- if ^%tep:~0,1%==^- goto :edit
- if not %n1%==/ set n1=%n1%%tep:~0,1%
- if %n1%==/ set n1=%tep:~0,1%
- goto :chop
- :Check
- :: Inserts escape character, for problematic characters that can not be removed
- if not %n1%==/ set n1=^%n1%^\^%tep:~0,1%
- if %n1%==/ set n1=^\^%tep:~0,1%
- goto :chop
- :edit
- ::sets a rename flag, then edits the problem bit out of the listed name, providing feedback on in progress names to show working status
- set namectl=y
- set tep=%tep:~1%
- echo processing File Name
- echo %n1%~~
- goto :loop
- :Last
- :: lasts step, puts the file into the list.txt & jumps to renaming file on the folder to remove problematic characters
- :: use of %n1% should be wrapped in the proper formatting and including folders to pictures with the correct slash
- echo %n1%>> list.txt
- if %namectl%==y goto :rename
- exit /b
- :rename
- :: sets/resets key renaming variables
- set tname=%n1%*
- set rname=
- :Renamestart
- ::Skips to renaming if special character, that is forbidden in file system names exist (can be changed, though suggested to use a forbidden character file system that doesn't cause issues in batch, for windows no regex is needed as forloop sets the exact name and * is forbidden from use, allowing detection of special character to mark the end of the 'string'
- :: if found skips to renaming action
- if %tname%==* goto :renamed
- ::Subloops checking for problematic characters
- if "%tname:~0,1%"==" " goto :renames
- if ^%tname:~0,1%==^\ goto :renames
- :: skips if problem characters, builds temp variable for new name
- if not %rname%.==. set rname=^%rname%^%tname:~0,1%
- if %rname%.==. set rname=^%tname:~0,1%
- :renames
- :: sets the cuts the used character out of the temporary variable, then restarts subloop
- set tname=%tname:~1%
- goto :Renamestart
- :renamed
- ::renames file [windows specific] & exits the forloop to the next file
- rename %name% %rname%
- echo renamed %name% to %rname% >> Rlist.txt
- exit /b
- :chop
- ::chops the used character out of the variable & restarts the subloop
- set tep=%tep:~1%
- echo processing File Name
- echo %n1%~~
- goto :loop
- :End
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement