¿Cómo obtener el nombre de archivo de un archivo de icono en una carpeta para crear / actualizar desktop.ini para carpetas?

Necesito ayuda para devolver el nombre de archivo de un archivo ubicado en una carpeta.

He leído otras preguntas algunas veces y la respuesta parece ser:

for /d %F in (*.*) do echo %~nxF

Aunque esto parece funcionar para todos los demás, cuando lo ejecuto dentro de un archivo por lotes tiene una excepción y afirma que no se espera '~ nxF' en este momento.

Lo que estoy tratando de hacer es crear un archivo por lotes que lea el nombre del archivo del icono, luego ingrese la información específica endesktop.ini y finalmente crear ese archivo con los respectivos derechos o atributos.

@echo off

set NAME=%~dp0
for %%* in (.) do set NAME=%%~n*

set FOLDERICO=%NAME%
set ICONSIZES=16 24 32 48 64 128 256
set FOLDERINI=Desktop.ini

attrib +s "%CD%"

if exist %FOLDERINI% attrib -s -h %FOLDERINI%

echo [.ShellClassInfo] > %FOLDERINI%
echo IconResource=\[Video]\[HD Films]\%FOLDERICO%\Icon\%FOLDERICO%.ico,0 >> %FOLDERINI%

if not "%2"=="" (
    echo FolderType=%2 >> %FOLDERINI%
)
attrib -a +s +h %FOLDERINI%

Creo que el código podría mejorarse de alguna manera para ejecutarlo desde un directorio raíz en lugar de la carpeta específica.

EDITAR: Actualicé mi archivo para que ahora se vea así:

@ECHO OFF

attrib +s "%CD%"
set ICODIR=%CD%\Icon\

for %%F in ("%ICODIR%"*.ico) do set ICO=%%~nxF
echo %ICO%

set ICOINI=Desktop.ini
if exist %ICOINI% attrib -s -h %ICOINI%

echo [.ShellClassInfo] > %ICOINI%
echo IconResource=%ICODIR:~2%%ICO%,0 >> %ICOINI%

if not "%2"=="" (
    echo FolderType=%2 >> %ICOINI%
)

attrib -a +s +h %ICOINI%

Pause

Que necesito poner en un bucle for escaneando cada subdirectorio de la raíz.

Respuestas a la pregunta(1)

Su respuesta a la pregunta