【发布时间】:2016-10-18 22:29:43
【问题描述】:
我在 SuperUser 上遇到了以下批处理代码,其目的是以编程方式替换文件夹的图标。
CD "%userprofile%\desktop"
MKDIR "TEST FOLDER"
ATTRIB +s "TEST FOLDER"
CD "TEST FOLDER"
COPY /Y "%userprofile%\desktop\image.ico" "./image.ico"
ECHO [.ShellClassInfo] >> desktop.txt
ECHO ConfirmFileOp=0 >> desktop.txt
ECHO NoSharing=1 >> desktop.txt
ECHO IconFile=image.ico >> desktop.txt
ECHO IconIndex=0 >> desktop.txt
ECHO InfoTip= >> desktop.txt
CHCP 1252 >NUL
CMD.EXE /D /A /C (SET/P=ÿþ)<NUL > desktop.ini 2>NUL
CMD.EXE /D /U /C TYPE desktop.txt >> desktop.ini
DEL /F /Q desktop.txt
ATTRIB +S +H desktop.ini image.ico
我很容易得到脚本的其余部分,但我无法理解这三行:
CHCP 1252 >NUL
CMD.EXE /D /A /C (SET/P=ÿþ)<NUL > desktop.ini 2>NUL
CMD.EXE /D /U /C TYPE desktop.txt >> desktop.ini
SS64 告诉我 chcp 1252 与称为 "code page" 的东西有关,1252 对应于“西欧拉丁语”,所以我最好的猜测是这会强制脚本使用拉丁字符集。后两行打开 CMD 的实例; SS64 表示第一个上的 /A 开关使其以 ANSI 输出,而第二个上的 /U 使其输出 Unicode。这大约是我所能推测的,如果有人能仔细阅读这三行的每个主要部分并告诉我他们在做什么,我将非常感激。
谢谢!
【问题讨论】:
-
chcp 更改键盘的代码页:read more 和 cmd 行操作您的 desktop.ini
-
@mtizziani:代码页和键盘完全不相关。
CHCP将数据的解释从 STDIN 更改为控制台的 STDOUT。
标签: windows shell batch-file command-line cmd