这是我第一次在这里发帖,所以如果我在错误的地方,我道歉。
我有一个批处理文件,它从文本文件中读取域列表,然后对它们进行nslookup ls,将结果发布到自己的文本文件中。
直到最近我一直没有遇到过这个问题,我不知道为什么我的生活会解决为什么会这样。除了第一个文件外,所有文件都很完美!第一个文件名始终以"∩╗┐" (没有引号)这些文件被我写的另一个程序读取,因此它往往会导致问题。
这是创建文件的代码......
(
del /s /q "D:\Profile\Desktop\New_folder\Records\*.*"
for /f %%a in (D:\Profile\Desktop\New_folder\Domains\Domains.txt) do (
echo ls %%a >temp\tempfile.txt
echo exit >>temp\tempfile.txt
nslookup < temp\tempfile.txt > records\%%a.txt
)
)
非常感谢任何帮助。
干杯,
亚伦
答案 0 :(得分:1)
根据IBM Extendend Characterset,您提到的字符的十六进制代码EF BB BF
是UTF-8字节顺序标记(&#34; BOM&#34;),请参阅Wikipedia。这意味着文件Domain.txt似乎最近使用带有BOM的UTF-8字符编码保存。
为了摆脱这些字符,只需编辑文件并在没有BOM的情况下保存。参见例如至How to make Notepad to save text in UTF-8 without BOM?如何操作或搜索&#34;删除BOM&#34;
请注意,没有BOM的UTF-8与可打印的ASCII兼容,即&#34; normal&#34;编码为UTF-8的字符将在大多数常见字符集中正确显示,例如IBM Extended Characterset。
如果您不能或不想编辑输入文件,那么您可能会删除批处理脚本中的前缀,请参阅http://www.robvanderwoude.com/ntset.php#StrSubst中的子字符串 - 最终类似
set BOM_REMOVED=false
for ...
set X=%%a
if %BOM_REMOVED%==false set X=%X:~3%
set BOM_REMOVED=true
echo ls %X >temp\tempfile.txt
...