背景是这样,我在powershell中想重定向生成一个ANSI编码的文件,试了多种编码方式都做不到,比如
代码语言:powershell复制"oem" | out-file "c:test_test_testout-file-oem.txt" -encoding oem
"ascii" | out-file "c:test_test_testout-file-ascii.txt" -encoding ascii
"default" | out-file "c:test_test_testout-file-default.txt" -encoding default
这3句powershell代码生成的文件用notepad 打开都显示是UTF-8编码
我就想用powershell生成一个.txt文件是ANSI编码的,发现有点难,但下面这句可以(注意>前后没有空格,有空格则达不到效果)
代码语言:powershell复制cmd.exe /c echo �te%>c:log.txt
后来我就研究�te%到底有啥不同,发现是Windows特性:涉及�te%是ANSI编码,例如
代码语言:bash复制echo �te%>C:log.txt文本文件编码是ANSI
echo %time%>C:log.txt文本文件编码是UTF-8
echo %path%>C:log.txt文本文件编码是UTF-8
echo �te% %time%>C:log.txt文本文件编码是ANSI
echo �te% %path%>C:log.txt文本文件编码是ANSI
如何.cmd或.bat中实现换行重定向?
示例:
代码语言:bash复制(
echo Line1
echo Line2
echo Line3
)>output.txt
C:UsersAdministrator>(
More? echo �te%
More? echo "%path%"
More? echo %time%
More? )>c:log.txt
More?是回车换行的时候自己出来的,不是代码中的字符,忽略即可
实际敲代码的时候是下面这样(注意%path%要加引号,否则可能会报错“此时不应有xxx”,原因是报错的那个环境变量路径不存在)
代码语言:bash复制(
echo �te%
echo "%path%"
echo %time%
)>c:log.txt