如何在批处理文件中将test.txt以UTF-8编码创建?
如何在批处理文件中将test.txt以UTF-8编码创建?
嘿,我明白你的需求啦——你希望批处理生成的test.txt用UTF-8编码,而不是默认的ANSI格式。原来的break > test.txt命令确实会创建ANSI编码的文件,这里给你两种可靠的解决办法:
方法一:用PowerShell创建UTF-8文件(推荐)
批处理本身没有直接指定编码创建文件的原生命令,但我们可以调用PowerShell来实现。把原来的break > test.txt替换成下面这条命令:powershell -Command "'' | Out-File -FilePath 'test.txt' -Encoding utf8"这条命令会生成不带BOM的UTF-8文件,这也是目前最通用的UTF-8格式。如果你需要带BOM的UTF-8,把参数里的
utf8改成utf8BOM即可。方法二:切换代码页生成UTF-8文件
你也可以先通过chcp命令切换到UTF-8代码页(编号65001),再创建文件:chcp 65001 >nul echo. > test.txt不过这种方法生成的文件会带BOM,而且后续批处理里的输出内容也会采用UTF-8编码,如果你有非UTF-8的字符可能会出现乱码,所以更推荐第一种方法。
下面是修改后的完整批处理代码,已经替换了创建test.txt的部分:
@echo off cls :: 创建UTF-8编码的空test.txt(不带BOM) powershell -Command "'' | Out-File -FilePath 'test.txt' -Encoding utf8" pushd "C:\Users\MARKETING 1\Desktop\SHARED" || exit /B 1 for /D %%D in ("*") do ( rd /S /Q "%%~D" ) for %%F in ("*") do ( if /I not "%%~nxF"=="FILES SAVED HERE WILL BE AUTOMATICALLY DELETED EVERY SATURDAY.txt" del "%%~F" ) popd start test.txt echo %DATE% %TIME% >> test.txt if %errorlevel% NEQ 1 Echo ERROR DETECTED>>test.txt if %errorlevel% EQU 1 Echo No error detected>>test.txt if %errorlevel% NEQ 1 (echo No errors found) ELSE (echo ERROR DETECTED)>>test.txt if %errorlevel% EQU 1 echo No errors found || echo ERROR DETECTED>>test.txt dir "C:\Users\MARKETING 1\Desktop\SHARED">>test.txt
备注:内容来源于stack exchange,提问作者Mirko Nastasi
相关产品推荐
相关产品推荐

