Skip to content

Commit fde6e77

Browse files
authored
v0.2.1
1 parent 61424d8 commit fde6e77

File tree

1 file changed

+49
-13
lines changed

1 file changed

+49
-13
lines changed

Backup to Zip.bat

+49-13
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
:: Requirements: 7-Zip (CLI), Powershell (native to Windows)
99
:: URL: https://github.com/chocmake/Backup-to-Zip
1010
:: Author: choc
11-
:: Version: 0.2 (2023-02-10)
11+
:: Version: 0.2.1 (2024-03-11)
1212

1313
:: Note: If you'd like to add custom comments to the backup filenames add them
1414
:: after the date/time and wrap the comments in square brackets.
@@ -394,6 +394,41 @@ exit
394394
set "%~2=!args:*%~1 =!"
395395
exit /b
396396

397+
:lastindexof
398+
set "str=!%~1!"
399+
set "delim=!%~2!"
400+
set "delim=!delim:~0,1!"
401+
402+
set "str2=.!str!"
403+
call :len str2 str2len
404+
for /l %%n in (!str2len! -1 0) do if "!str:~%%n,1!" equ "!delim!" (
405+
set "rtn=%%n"
406+
goto :break
407+
)
408+
set "rtn=-1"
409+
410+
:break
411+
set "%~3=!rtn!"
412+
exit /b
413+
414+
:lastsubstringbydelim
415+
rem Extract last substring beginning with delimiter and output result
416+
set "delim=%1"
417+
set "delim=!delim:"=!"
418+
set "str=!%~2!"
419+
420+
call :len str strlen
421+
call :lastindexof str delim delimstart
422+
set /a "strdiff=!strlen!-!delimstart!"
423+
for %%d in (!strdiff!) do (
424+
set "extracted=!str:~-%%d!"
425+
set "leftover=!str:~0,-%%d!"
426+
)
427+
set "%~3=!extracted!"
428+
rem If forth argument defined then output input string with substring removed
429+
if "%~4" neq "" (set "%~4=!leftover!")
430+
exit /b
431+
397432
:filenameformat
398433
call :datetime
399434
set "suffix=!date!" & if defined destname set "suffix= - !suffix!"
@@ -406,20 +441,21 @@ exit
406441
for %%f in ("!destdir!!destname!!suffix! [*]!ext!") do (
407442
setlocal disabledelayedexpansion
408443
set "f=%%f"
444+
set "origext=%%~xf"
445+
set "origname=%%~nf"
409446
setlocal enabledelayedexpansion
410-
for /f "tokens=2,3 delims=[" %%a in ("!f!") do (
411-
setlocal disabledelayedexpansion
412-
set "a=%%a"
413-
set "b=%%b"
414-
setlocal enabledelayedexpansion
415-
rem Check if filename already has secondary square brackets (eg: `[m]`)
416-
if exist "!destdir!!destname!!suffix! [*] [*]!ext!" (
417-
ren "!f!" "!destname!!suffix! (1) [!a![!b!"
418-
) else (
419-
ren "!f!" "!destname!!suffix! (1) [!a!"
420-
)
421-
endlocal & endlocal
447+
448+
rem Determine last occurrence of opening square brackets in filename, assumed to be start of user-added comment
449+
call :lastsubstringbydelim "[" origname comment orignameleftover
450+
451+
rem Check if filename already has secondary square brackets (eg: `[m]`)
452+
if exist "!destdir!!destname!!suffix! [*] [*]!ext!" (
453+
call :lastsubstringbydelim "[" orignameleftover firstbrk
454+
ren "!f!" "!destname!!suffix! (1) !firstbrk!!comment!!ext!"
455+
) else (
456+
ren "!f!" "!destname!!suffix! (1) !comment!!ext!"
422457
)
458+
423459
endlocal & endlocal
424460
)
425461
)

0 commit comments

Comments
 (0)