重定向中,%date%比较特殊

2024-04-12 13:32:14 浏览数 (1)

背景是这样,我在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

0 人点赞