0

我有一个文件夹,里面有一个 .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 分配给了该文件夹,因为没有它,这两种方式都不起作用。

那么这里有什么问题呢?

4

1 回答 1

1

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

问题:

  1. 每行末尾的空格过多。

    A出现在 的左侧>,表示要在文件中添加一个额外的空格。

    要解决这个问题,只需删除这个空间。喜欢ECHO ConfirmFileOp=0>>desktop.ini

  2. 未转义的数字

    ECHO ConfirmFileOp=0>>desktop.ini表示写入ConfirmFileOp=命令窗口并将标准输出通过管道传输到desktop.ini. 0是一个管道令牌。

    要解决此问题,请将数字转义^0^1左右。参考 -在 Windows 命令提示符中转义尖括号

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

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

    desktop.ini应该隐藏,系统,而不是存档。参考 - https://superuser.com/a/396051/333430 您可以通过将以下行添加到批处理脚本来更改的属性:desktop.ini

    attrib desktop.ini -a +h +s
    
于 2014-08-11T00:29:27.580 回答