本当に助けが必要です!何週間もたゆまぬ努力を続けてきた...
このスクリプトはすべてのサブディレクトリの属性を変更し、サブディレクトリの \Icon 内にあるアイコンを使用すると、関連する Desktop.ini が作成され、フォルダ アイコンと他のいくつかの設定が変更されます (\Icon 内にアイコンがある場合) )
@ECHO OFF
CHCP 1252 >NUL
set ICOINI=Desktop.ini
for /D %%d IN (*) do (
set "FOLDER=%%d"
call :write_File FOLDER
)
Pause
:Write_File
setlocal EnableDelayedExpansion
IF NOT EXIST "!FOLDER!\Icon\*.ico" goto :EOF
attrib +a +s "!FOLDER!" /d /s
for %%F in ("!FOLDER!\Icon\*.ico") do (set "ICO=%%~nxF")
IF EXIST "!FOLDER!\%ICOINI%" attrib -a -s -h "!FOLDER!\%ICOINI%"
(
echo [.ShellClassInfo]
echo IconResource=!CD:~2!\!FOLDER!\Icon\!ICO!, 0
echo IconFile=!CD:~2!\!Folder!\Icon\!ICO!
echo IconIndex=0
echo InfoTip=!ICO:~0,-4!
echo.
echo FolderType=Videos
echo DefaultDropEffect=4
echo ConfirmFileOp=1
)>"!FOLDER!\%ICOINI%"
attrib -a +s +h "!FOLDER!\%ICOINI%"
echo !FOLDER!
endlocal
goto :EOF
exit /b
このスクリプトは、関連するフォルダーの属性を変更し、Desktop.ini を作成するという点で機能します (感嘆符がある場合を除きます!)。フォルダのアイコンを常に変更するとは限りませんが。Desktop.ini を手動で「.」に変更してから Desktop.ini に戻すと、フォルダ アイコンが即座に変更されます。では、属性をそのまま使用して Desktop.ini の名前を変更する方法はありますか?
この問題を解決するための現在の方法は、次のようなものでした。
echo f | xcopy /Y /Q /H /R "!CD!\!FOLDER!\%ICOINI%" "!CD!\!FOLDER!\Desktoop.ini" /K
del /Q /AHS "!CD!\!FOLDER!\%ICOINI%"
echo f | xcopy /Y /Q /H /R "!CD!\!FOLDER!\Desktoop.ini" "!CD!\!FOLDER!\%ICOINI%" /K
del /Q /AHS "!CD!\!FOLDER!\Desktoop.ini"
悲しいことに、これは失敗しますが、その理由はわかりません。(コピー、削除、コピー、そして問題なく削除されます)フォルダアイコンは変更されません。
わかりました、私は以前に何度もこの問題に遭遇しました。一部はコマンド バッチ スクリプトに関係していましたが、この問題はそうではないようです。回避策を考え出すのに助けが必要ですが(それがバッチで可能であれば!)。