Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 通过批处理以UTF-8格式保存文本_Batch File_Encoding_Utf 8 - Fatal编程技术网

Batch file 通过批处理以UTF-8格式保存文本

Batch file 通过批处理以UTF-8格式保存文本,batch-file,encoding,utf-8,Batch File,Encoding,Utf 8,我仍在为.m3u播放列表文件开发一个转换器,将其从Windows Media Player生成的格式转换为Teamspeak 3插件“Soundboard”接受的格式 主转换器现已完成,我遇到了最后一个问题: 当使用批处理脚本编写新代码时,它会使用echo a-lot-of-text-and-code>>3.txt保存到ANSI编码的文件中,并且插件似乎只能打开UTF-8编码的文件 有没有办法只通过批处理将3.txt的编码从ANSI更改为UTF-8 关于Joe,这需要一些实验,但我成功地调整了编

我仍在为.m3u播放列表文件开发一个转换器,将其从Windows Media Player生成的格式转换为Teamspeak 3插件“Soundboard”接受的格式

主转换器现已完成,我遇到了最后一个问题: 当使用批处理脚本编写新代码时,它会使用
echo a-lot-of-text-and-code>>3.txt保存到ANSI编码的文件中,并且插件似乎只能打开UTF-8编码的文件

有没有办法只通过批处理将3.txt的编码从ANSI更改为UTF-8


关于Joe,这需要一些实验,但我成功地调整了编码,将文件编码为UTF-8,并使用批处理

@echo关闭
setlocal
::utf8.bat填充输出文件
::将内嵌转换为utf8并另存为输出文件
如果不存在“%~1”转到用法
如果“%~2”==”转到用法
设置“infle=%~f1”
设置“输出文件=%~f2”
::将当前控制台代码页存储到变量
对于/f“tokens=2 delims=:”('chcp')中的%%I do set“\u代码页=%%I”
::暂时将控制台代码页更改为UTF-8
>NUL chcp 65001
::设置输出文件的字节顺序标记
>“%outfile%”设置/p“=i»”>“%outfile%”类型“%infle%”
::将控制台还原到原始代码页
>NUL chcp%\u代码页%
后藤:EOF
:用法
回显用法:%~nx0填充输出文件

不过,这个脚本本身需要以ANSI编码保存。

工作得非常好!一个问题:为什么脚本必须是ANSI本身?我是说,有什么明显的原因我看不出来吗?但是已经谢谢你了!Windows将BOM表视为错误命令并进行投诉。第一行的任何指令都会失败。不过,如果将脚本保存为utf-8而不包含BOM,则该脚本可能会工作。不确定。请随意试验。还有一个问题:“setlocal”在没有任何进一步命令的情况下做什么?我只知道“setLocalEnableDelayedExpansion”命令可以处理for循环中的变量。这样做是相同的还是有其他意义?
setlocal
将脚本中定义的任何变量的范围限制为脚本本身。当脚本退出时(或遇到
endlocal
时),调用
setlocal
后设置的变量将被遗忘。看看为什么这被认为是良好的做法。谢谢你,我会尝试去适应它的进一步脚本!