2014-11-24 3 views
0

텍스트 파일에서 바이오스 정보를 얻기 위해 배치 파일을 사용하고 있습니다. 내가 사용하고 구문 :배치를 통한 텍스트 파일의 개행 출력

wmic bios >> information.txt 

위의 구문 출력이 제대로입니다. 다음으로 동일한 파일의 끝에 텍스트를 쓰려고합니다.

이에 대한

나는

echo. >>information>>txt 
echo. >>information.txt  
echo This is the report generated. >> information.txt 

하지만 텍스트 파일의 끝에서 출력을 사용하고 桤 摶 桶 摶 摣 ഠ 洊 扤 桪 摶 癨 癤 癨 捤 ⁤ഠ 洊 扤 桪 摶 癨 癤 癨 捤입니다 plz help

답변

0

WMIC은 유니 코드로 정보를 출력합니다. ASCII로 변환하기 위해이 같은 시도 : 이미 언급 npocmaka

for /f "delims=" %%a in ('wmic bios') do ( 
    for /f "delims=" %%z in ("%%a") do (echo %%z)>>info.txt 
) 
0

으로 wmic 당신에게 유니 코드를 제공합니다.

wmic bios|findstr "^">information.txt 
echo additional line>>information.txt 
1

WMIC에서 기본 출력은 BOM 스트림, 문자 당 2 바이트가없는 유니 코드는 다음과 같습니다

는 ASCII에서 'wmic` 출력을 얻을 수있는 또 다른 방법입니다. 그러나 echo 명령의 기본 출력은 cmd 시작 옵션에 따라 다릅니다. 기본적으로 cmd의 출력은 문자 당 1 바이트입니다.

생성 된 파일 내용을 보면 시스템은 유니 코드임을 감지하고 읽기/쓰기 루틴을 이에 맞게 조정하지만 에코 텍스트가 발견되면 유니 코드로 처리되고 각 2 문자는 유니 코드로 간주됩니다 숯. 결과 파일 유니 있어야한다면 cmd 인스턴스 유니 코드로 echo 출력을 강제로 스위치 /u 시작 내부

는 다음 echo 명령이 실행될 필요가있다. 최종 파일의 BOM을 포함 할 필요가있는 경우 당신이 cmd를 예를 내부에 모든 일괄 처리를 실행하거나

wmic bios > information.txt 
cmd /q /u /c "echo additional line >> information.txt" 

또한

을 필요로 할 때 전화를 걸 수, 당신은 직접 파일을 생성 wmic에 표시하는 대신 리디렉션 포함 할 수 있습니다 단일 바이트 문자로 변환하는 출력

wmic /output:information.txt bios 

파일이 유니 코드 할 필요가없는 경우, 당신은 wmic (find, findstr 또는 more)의 출력을 필터링 할 수 있습니다 그래서 나중에 단일 바이트 문자 echo 명령은 스트리밍 스트림에 올바르게 포함됨

(
    wmic bios 
    echo(
    echo(additional line 
)|find /v "" > information.txt