Как получить имя файла значка в папке для создания / обновления desktop.ini для папки (-й)?

Мне нужна помощь, чтобы вернуть имя файла, расположенного в папке.

Я прочитал несколько вопросов, заданных несколько раз, и ответ, кажется, таков:

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

Хотя это, кажется, работает для всех остальных, когда я запускаю это в пакетном файле, у него есть исключение и говорится, что~ NxF» не ожидается в это время.

То, что я пытаюсь сделать, это создать командный файл, который будет читать имя файла значка, а затем ввести конкретную информацию вdesktop.ini и, наконец, создать этот файл с соответствующими правами или атрибутами.

@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%

Я думаю, что код может быть улучшен, чтобы запустить его из корневого каталога, в отличие от конкретной папки.

РЕДАКТИРОВАТЬ: Обновил мой файл, теперь он выглядит так:

@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

Который мне нужно положить в цикл проверки для каждого подкаталога корня.

Ответы на вопрос(1)

Ваш ответ на вопрос