【问题标题】:Script or batch file for editing desktop.ini file用于编辑 desktop.ini 文件的脚本或批处理文件
【发布时间】:2017-07-27 01:51:13
【问题描述】:

我使用的是 64 位 Windows 10 Pro v1607 build 14393.693 如何修改系统上的每个 desktop.ini 文件? 我有一个小型 SSD C 驱动器和一个大型 HD E 驱动器。 我将我的 Icon 文件夹从 C 盘上移开,并将 Icon 文件夹放在 E 盘上。 现在我所有的自定义设置图标都没有显示。 如何修改系统上的每个 desktop.ini 文件? 例如,其中一个 desktop.ini 文件是:

[.ShellClassInfo]
IconResource=C:\Windows\System32\Icons\microsoft 1.ico,0

我想删除 C:\Windows\System32 并替换为 E:\ 此示例生成的 desktop.ini 文件字符串将是:

[.ShellClassInfo]
IconResource=E:\Icons\microsoft 1.ico,0

我想将此替换应用于每个包含以下内容的 desktop.ini 文件 字符串 C:\Windows\System32 感谢您提供的任何帮助。

【问题讨论】:

  • 感谢大家的意见。看来此代码将全部更改为一个特定图标。我需要做的是只改变字符串的一部分。如果一个文件夹包含 IconResource=C:\Windows\System32\icons\media.ico,0 则更改为 IconResource=E:\Icons\media.ico,0 如果 IconResource=C:\Windows\System32\icons\music_note。 ico,0 然后 IconResource=E:\Icons\music_note.ico,0 如果 IconResource=C:\Windows\System32\icons\gsp omega composer.ico,0 那么 IconResource=E:\Icons\gsp omega composer.ico,0我希望这能澄清我的预期要求。感谢您提供任何新见解。
  • 感谢编码信息。我会认为这个案子已经结案。再次感谢。 Ed44

标签: batch-file desktop.ini


【解决方案1】:

据我所知 - 您计算机(Windows)中的每个文件夹都包含一个 Desktop.ini 文件,该文件也定义了文件夹的图标(以及更多)。我们可以轻松爬取所有文件夹并修改其Desktop.ini文件。

@Echo off
SetLocal EnableDelayedExpansion
Set _Counter=0
Set _Files=0
Cls

REM Crawling through folders and injecting our own lines...
For %%A 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) Do (
    If Exist "%%A:" If "%%A:" NEQ "!SystemDrive!" (
        Cd /D "%%A:"
        Cd /
        For /f "Tokens=*" %%B in ('dir /s /b *.* /a:d') Do (
            If Exist "%%B\Desktop.ini" (
                Set _Counter=0
                For /f "Usebackq Tokens=1,2 delims==" %%C in ("%%B\Desktop.ini") Do (
                    Set /A _Counter+=1
                    IF /I "%%C" == "IconResource" (
                        Set "_Icon_Path=%%D"
                        If /I "!_Icon_Path:~0,19!" == "C:\Windows\System32" (Set "_Line[!_Counter!]=%%C=!_Icon_Path:C:\Windows\System32=E:!")
                        ) ELSE (IF /I "%%D" == "" (Set "_Line[!_Counter!]=%%C") ELSE (Set "_Line[!_Counter!]=%%C=%%D")
                    )
                )
                Call :Saveit !_Counter! "%%~B"
                Set /a _Files+=1
         )
    )
)
)

Echo. You are Done in all the Drives. :^)
Echo. Total Files modified= %_Files%
Echo. 

Pause


REM Extra Function...
:Saveit
Del /Q "%~2\Desktop.ini" >nul
For /L %%A in (1,1,%~1) Do (echo.!_Line[%%A]!>>"%~2\Desktop.ini")
Goto :Eof

再次根据您在 cmets 中的最后一行问题和建议进行更新,现在您可以知道...它从结果中替换了 'C:\windows\system32'。仅当文件存在且仅当 iconresource 在第二个标记中包含上述字符串时。 :)

这肯定会解决您在所有现有驱动器中的问题。而且,要在敏感区域进行修改 - 我建议以管理员身份运行它。

TheBAT 团队

【讨论】:

  • 请注意:程序将需要一些时间 - 扫描您的 SystemDrive(即 C 驱动器 - 如果 Windows 安装在 C 中)。驱动器中的文件夹越多,扫描所需的时间就越多 - 但是,它肯定会完成您的工作。 :)
  • 如果是这种情况 - 您可以将第 5 行修改如下:(现在不要以管理员身份运行)If Exist "%%A:" 到** If Exist "%%A:" If "%%A:" NEQ "!SystemDrive!"** 和, 为了使它工作...在 Echo Off 之后添加这个简单的行:SetLocal Enabledelayedexpansion [thebateam.org/2017/01/…(添加这个额外行的原因)
  • desktop.ini 文件有许多不同的LocalizedResourceName 字符串和IconResource 字符串,通常是UTF-16 LE, BOM 我强烈建议不要使用上面的代码盲目地将驱动器上的每一个都更改为相同的字符串。
  • 感谢大家的意见。看来此代码将全部更改为一个特定图标。我需要做的是只改变字符串的一部分。如果一个文件夹包含 IconResource=C:\Windows\System32\icons\media.ico,0 则更改为 IconResource=E:\Icons\media.ico,0 如果 IconResource=C:\Windows\System32\icons\music_note。 ico,0 然后 IconResource=E:\Icons\music_note.ico,0 如果 IconResource=C:\Windows\System32\icons\gsp omega composer.ico,0 那么 IconResource=E:\Icons\gsp omega composer.ico,0我希望这能澄清我的预期要求。感谢您提供任何新见解。
  • :) 再次更新代码以获得更好的结果。我希望这能满足要求(在你的最后一段问题中指出)——也请阅读我回答的最后一段。 :)
【解决方案2】:

Desktop.ini editör 是一款简化 Desktop.ini 操作的便携式免费软件,它可以帮助您编辑 desktop.ini 文件并设置自定义文件夹图标、文件夹信息提示、添加 CLSID、将文件夹设置重置为默认 usw。

首页 http://www.sordum.org/10084/desktop-ini-editor-v1-0/

【讨论】:

    猜你喜欢
    • 2013-01-22
    • 2013-09-23
    • 1970-01-01
    • 2012-12-28
    • 2013-08-02
    • 2015-08-28
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多