Batch file 将文件夹内的ico属性批处理为新图标

Batch file 将文件夹内的ico属性批处理为新图标,batch-file,directory,ico,Batch File,Directory,Ico,我有一个文件夹,里面有一个.ico文件,我想将它设置为主文件夹的图标 这是我的问题,如果我手动执行此操作并输入此代码 [.ShellClassInfo] ConfirmFileOp=0 NoSharing=1 IconFile=folder.ico IconIndex=0 InfoTip=Some sensible information. 在desktop.ini文件中,它工作得很好 但是,如果一个用户使用以下代码创建一个bat文件,它就不会这样做 ECHO [.ShellClass

我有一个文件夹,里面有一个.ico文件,我想将它设置为主文件夹的图标

这是我的问题,如果我手动执行此操作并输入此代码

[.ShellClassInfo]
ConfirmFileOp=0  
NoSharing=1  
IconFile=folder.ico
IconIndex=0
InfoTip=Some sensible information.
在desktop.ini文件中,它工作得很好

但是,如果一个用户使用以下代码创建一个bat文件,它就不会这样做

ECHO [.ShellClassInfo] >desktop.ini  
ECHO ConfirmFileOp=0 >>desktop.ini  
ECHO NoSharing=1 >>desktop.ini  
ECHO IconFile=folder.ico >>desktop.ini  
ECHO IconIndex=0 >>desktop.ini  
ECHO InfoTip=Some sensible information. >>desktop.ini 
输出完全相同。我还将+r分配给文件夹,因为没有它,它无法以任何方式工作


那么这里出了什么问题?

这是由于命令中有几个未转义的特殊字符造成的。如果您先运行批处理,然后打开
desktop.ini
查看其内容,您会发现这与您的期望相差甚远

问题:

  • 每行末尾的空格过多

    一个
    出现在
    的左侧,这意味着要向文件中添加额外的空格

    要解决此问题,只需删除此空间。类似于
    ECHO ConfirmFileOp=0>>desktop.ini

  • 未逃脱的数字

    ECHO ConfirmFileOp=0>>desktop.ini
    表示将
    ConfirmFileOp=
    写入命令窗口,并将stdout传输到
    desktop.ini
    <代码>0是管道标记

    要解决此问题,请通过
    ^0
    ^1
    等方式对数字进行转义。参考-

    更简单的方法是在行首写入输出重定向指令-

    >>desktop.ini echo ConfirmFileOp=0
    
  • 不正确的文件属性

    desktop.ini
    应隐藏在系统中,而不是存档。参考- 通过将以下行添加到批处理脚本中,您可以使用
    desktop.ini

    attrib desktop.ini -a +h +s
    

  • 谢谢你对伊冯的回复,但这并没有解决问题。我知道desktop.ini是一个隐藏文件。奇怪的是,如果我将相同的代码输入到一个txt文件中,然后使用另一个bat文件转换该文件,并使用以下ren*.txt*.ini,它就会工作,图标就会出现。但是,如果我在前一个代码的末尾添加了相同的代码,它就不起作用了,这很尴尬。@JoãoLagoas您在这个过程之后注销并再次登录了吗?@JoãoLagoas我也碰巧,当我第一次在新文件夹中创建这样的文件时,什么都没有发生;当我第一次在“属性”(另一个新文件夹的属性)中更改图标时,以下任何操作(启用图标、禁用图标、更改图标等)都有效。我不知道为什么会发生这种情况,但Windows似乎对自动生成的desktop.ini免疫,以防出现恶意软件或病毒。用户输入,如write.txt文件,首先会创建带有explorer.exe的文件;这可能就是不同之处。