you may begin with a simple iteration on the filename
set str=This IsGood 1.1
:again
set chr=%str:~0,1%
set str=%str:~1%
if not "%chr%"=="" echo %chr%
if not "%str%"=="" goto :again
read HELP SET
, HELP IF
and HELP GOTO
Now, if understood, proceed by changing the echo
command into a call...
if not "%chr%"=="" call :checkchar %chr%
...
:checkchar
echo %1
goto :eof
read HELP CALL
then implement the actual code for checking if the character is uppercase or not
:checkchar
for %%c in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9) do if .%1==.%%c echo %%1
goto :eof
read HELP FOR
change now this new echo
command into a new call to a function to set the variable to lowercase
now concatenate the result into a, say, fn
variable that you will need to initialize to blanks.
and wrap all with the appropiate filename handling, extracting just the filename (see the ~n option in the syntax of handling parameters) and then composing back the full path with the new name (using the ~d ~p ~x options)
@echo off
set fn=
call :upcaseonly %~n1
echo %~dp1%fn%%~x1
goto :eof
:upcaseonly
set str=%*
:again
set chr=%str:~0,1%
set str=%str:~1%
if not "%chr%"=="" call :checkchar %chr%
if not "%str%"=="" goto :again
goto :eof
:checkchar
for %%c in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9) do if .%1==.%%c set fn=%fn%%1
goto :eof
use this as a starting point. you will have to add your own logic for renaming the file and handling if the file already exists or if the file cannot be renamed ...