OS Windows 7 SP1
我在cmd.exe
:
echo 2> .gitignore
此命令将std::cerr
(本例中为空输出)重定向到.gitignore
文件中。结果文件具有ANSI
编码,但我需要utf-8
。我是否可以为utf-8
操作指出必要的编码(>
)?
答案 0 :(得分:4)
通过批处理文件输出重定向是不可能的。
使用内置实用程序执行此操作的唯一方法是调用powershell:
powershell -c "[io.file]::WriteAllText('.gitignore','',[System.Text.Encoding]::UTF8)"
答案 1 :(得分:1)
纯批量解决方案,基于dbenham的Generate nearly any character, including TAB, from batch
@echo off
(set LF=^
%=empty=%
)
::Create variables to store BOM bytes
call :hexprint "0xEF" EF
call :hexprint "0xBB" BB
call :hexprint "0xBF" BF
<nul SET /P "=%EF%%BB%%BF%"> output.txt
exit /b
:hexPrint string [rtnVar]
for /f eol^=^%LF%%LF%^ delims^= %%A in (
'forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c echo(%~1"'
) do if "%~2" neq "" (set %~2=%%A) else echo(%%A
exit /b
答案 2 :(得分:0)
混合批处理-JScript解决方案。只需另存为批处理文件即可正常运行
@if (@CodeSection == @Batch) @then
@echo off
cscript //e:jscript //nologo "%~f0" %1
exit /b
@end
// JScript Section
var fso = new ActiveXObject("Scripting.FileSystemObject");
var file = fso.CreateTextFile(WScript.Arguments.Item(0), true);
file.Write(String.fromCharCode(239));
file.Write(String.fromCharCode(187));
file.Write(String.fromCharCode(191));
file.Close();
与上述相同,但混合批次-VBS
<!-- : Begin batch script
@echo off
cscript //nologo "%~f0?.wsf" %1
exit /b
----- Begin wsf script --->
<job><script language="VBScript">
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.CreateTextFile(WScript.Arguments.Item(0), true)
file.Write Chr(239)
file.Write Chr(187)
file.Write Chr(191)
file.Close
</script></job>
答案 3 :(得分:0)
我有一个带有 BOM 的空文本文件,我将其复制,然后将我需要的内容附加到此文件中。
copy empty-bom.txt .gitignore
echo stuff>>.gitignore
我更喜欢这个解决方案,因为它比生成 BOM 的所有其他解决方案更具可读性和可理解性。
答案 4 :(得分:0)
使用 BOM 创建空的 UTF-8 文件的纯批处理:
set _FILE=output.txt
chcp 437 > nul
forfiles /c "cmd /c <nul set /p=0xEF0xBB0xBF>\"%_FILE%\"" > nul
chcp 65001 > nul
并添加行:
>> "%_FILE%" (
echo Line 1
echo Line 2
)
答案 5 :(得分:-1)
这将为您提供utf 16,使用cmd
开关{/ p>启动/u
cmd /u /c type ansi.txt > uni.txt
/u
使内部命令输出UTF16。
答案 6 :(得分:-1)
创建一个.bat / .cmd文件,如:
<nul SET /P "=123"> output.txt
然后在您喜欢的HEX编辑器中用EF BB BF字节替换123。
要编辑此.bat / .cmd文件,以后不应使用Window的Notepad.exe,因为它会将BOM字节转换为&#34中的问号(?
) ;另存为ASCII&#34;模式(或者,在&#34;另存为UTF-8&#34;模式下,它将不需要的BOM添加到脚本文件本身)。
相反,人们可以使用Notepad ++和#34; UTF-8(没有BOM)&#34;模式。