我有一个批处理脚本,它使用拖放并根据所删除文件/文件夹的文件名创建一些 html 代码。和
chcp 65001
我得到这个来写unicode。一切都很好。至少在记事本编辑器中,而浏览器只显示垃圾。当我在记事本中重新保存文件时,该文件也可以在浏览器中正常工作。不幸的是,与 hexdump ( http://www.fileformat.info/tool/hexdump.htm )相比,创建的 unicode 文件似乎在文件之前缺少两个“unicode header”字符(0xFF 和 0xFE)结果。
在这个话题上我发现了这个: http ://www.robvanderwoude.com/type.php#Unicode
来自那里的链接文件不起作用(参数格式错误)本网站关于非本地回声等的示例是不可能的。复制一个空的 unicodeHeader-Helper 文件并附加我的文件可以正常工作,但不是最理想的,因为这意味着,我的文件从中拖放的任何文件夹都需要有这个帮助文件。这不假定是既然是不切实际的情况,那就不好了。
使用 type 也是不可能的,因为它会在字符之间创建大量空格。
所以我正在考虑将缺少标题的文件写入临时文件,将两个十六进制值添加到文件中并将临时文件附加到其中。所以基本上直接编写十六进制字符,而不是从空的 unicode 帮助文件中复制它们。
我发现了这个: http ://www.dostips.com/forum/viewtopic.php?f=3&t= 3857 而且这个: Writing characters > 7F (127) as hex strings based on code page 1252 in windows batch file
我想我可以将示例十六进制值替换为 0xFF 和 0xFE 并使其回显到文件:
@echo off
call :hex2Char 0xFF char_FF
call :hex2Char 0xFE char_FE
echo %char_FF% %char_800%
exit /b
:hex2Char hexString rtnVar
for /f delims^=^ eol^= %%A in (
'forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c echo(%~1"'
) do set "%~2=%%A" >> temp.txt
exit /b
但似乎事情并没有那么简单。由此产生的两个问题: 1. 它在其中写入了一些 unicode 字符,但它与 unicode 帮助文件不同,如 hexdump 所示。
file name: UniHeader.txt
mime type:
0000-0003: ef bb bf
file name: temp.txt
mime type:
0000-0000:
事实上,我可以更改 FF 或 FE,但它仍然只在 hexdump 输出中打印 0000-0000 ......
- 我可以在该文件之后添加我想要的任何内容(例如编写无头文件并将其附加到创建的文件的代码,代码在第二个出口 /b 处停止并且不再写入任何内容。(但删除它会使整个事情根本不起作用,将它移动到文件的末尾使它无法找到被拖放到蝙蝠上的文件)老实说,我目前还没有通过这几个代码行。退出 /b 标志着结束该命令,如果我正确理解它,那么为什么它在第一次退出 /b 后继续工作,但在第二次退出 /b 处停止?我也尝试使用标签和 goto,没有工作。
我现在不知所措。有什么优雅的方法可以解决这个问题吗?