1

本当に助けが必要です!何週間もたゆまぬ努力を続けてきた...

このスクリプトはすべてのサブディレクトリの属性を変更し、サブディレクトリの \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"

悲しいことに、これは失敗しますが、その理由はわかりません。(コピー、削除、コピー、そして問題なく削除されます)フォルダアイコンは変更されません。

わかりました、私は以前に何度もこの問題に遭遇しました。一部はコマンド バッチ スクリプトに関係していましたが、この問題はそうではないようです。回避策を考え出すのに助けが必要ですが(それがバッチで可能であれば!)。

4

1 に答える 1

2

Windows XP (YMMV) およびWindows Sysinternalsでテスト済み

@echo off &setlocal
pskill explorer
start "" explorer
start "" explorer "%folder%"
于 2013-08-01T09:44:56.037 に答える