윈도우 서버용 일일점검 배치 스크립트를 짜던중 막히는 부분이 있어 문의 드립니다.
일단 "OS 정보"와 "메모리 갯수"에 대한 정보를 텍스트 파일로 저장하는 스크립트 입니다.
명령어는 2가지를 사용했습니다.
1. wmic os get Caption, CSDVersion, Version >> C:\SECURITY\Result.txt
2. wmic memorychip get BankLabel >> C:\SECURITY\Result.txt

위 명령어를 기반으로 스크립트를 작성했는데 내용은 아래와 같습니다.
@echo off
set YEAR=%date:~0,4%
set MONTH=%date:~5,2%
set DAY=%date:~8,2%
set HOUR=%time:~0,2%
set MIN=%time:~3,2%
set DATETIME=%YEAR%%MONTH%%DAY%_%HOUR%%MIN%
echo *************************************************************************** >> C:\%datetime%.txt
echo 1.1. OS Informatiom >> C:\%datetime%.txt
echo *************************************************************************** >> C:\%datetime%.txt
wmic os get Caption, CSDVersion, Version >> C:\%datetime%.txt
echo.>> C:\%datetime%.txt
set YEAR=%date:~0,4%
set MONTH=%date:~5,2%
set DAY=%date:~8,2%
set HOUR=%time:~0,2%
set MIN=%time:~3,2%
set DATETIME=%YEAR%%MONTH%%DAY%_%HOUR%%MIN%
echo *************************************************************************** >> C:\%datetime%.txt
echo 1.1. OS Informatiom >> C:\%datetime%.txt
echo *************************************************************************** >> C:\%datetime%.txt
wmic os get Caption, CSDVersion, Version >> C:\%datetime%.txt
echo.>> C:\%datetime%.txt
echo *************************************************************************** >> C:\%datetime%.txt
echo 1.2. Memorychip Information >> C:\%datetime%.txt
echo *************************************************************************** >> C:\%datetime%.txt
wmic memorychip get BankLabel >> C:\%datetime%.txt
for /f "tokens=2 delims==" %%a in ('wmic MEMORYCHIP get BankLabel /format:list') do set BankLabel=%%a
echo %BankLabel% >> C:\%datetime%.txt
echo.>> C:\%datetime%.txt
echo 1.2. Memorychip Information >> C:\%datetime%.txt
echo *************************************************************************** >> C:\%datetime%.txt
wmic memorychip get BankLabel >> C:\%datetime%.txt
for /f "tokens=2 delims==" %%a in ('wmic MEMORYCHIP get BankLabel /format:list') do set BankLabel=%%a
echo %BankLabel% >> C:\%datetime%.txt
echo.>> C:\%datetime%.txt
그런데 위 스크립트 내용을 배치파일(*.bat)작성해서 돌려보내 결과파일(*.txt)에 "nul" 이 삽입되어 결과가 저장되는데...
결과에서 nul 을 제거해여 저장할려면 어떻게 해야 할까요?

구글을 뒤져보다가 지쳐서 질문 올립니다.
아시는분 도움 부탁 드립니다...ㅠ.ㅜ;;
바꿀단어부분이 비어있으면 지우는거구요, 특정문자를 넣으면 치환되는겁니다.
http://withserver.tistory.com/entry/notepad-%EC%97%90%EC%84%9C-%EB%B9%88%EC%A4%84%EC%A0%9C%EA%B1%B0-%EB%B0%8F-%EA%B3%B5%EB%B0%B1%EC%A1%B0%EC%A0%88%EC%A0%9C%EA%B1%B0%EB%B0%A9%EB%B2%95
도스에서는 좀 어렵고, 서버라니 파워쉘에서 가능한듯합니다.
https://social.technet.microsoft.com/Forums/sharepoint/en-US/1df1ae68-4425-438f-8f0c-727ad70a1576/replacing-null-characters-in-file?forum=winserverpowershell
아니면 cygwin 깔아서 sed로 치환해도 좋습니다.
@echo off
set YEAR=%date:~0,4%
set MONTH=%date:~5,2%
set DAY=%date:~8,2%
set HOUR=%time:~0,2%
set MIN=%time:~3,2%
set DATETIME=%YEAR%%MONTH%%DAY%_%HOUR%%MIN%
echo *************************************************************************** >> C:\SECURITY\%datetime%.txt
echo 1.1. OS Informatiom >> C:\SECURITY\%datetime%.txt
echo *************************************************************************** >> C:\SECURITY\%datetime%.txt
wmic /output:z.txt os get Caption, CSDVersion, Version >> C:\SECURITY\%datetime%.txt
type z.txt >> C:\SECURITY\%datetime%.txt
echo.>> C:\SECURITY\%datetime%.txt
echo *************************************************************************** >> C:\SECURITY\%datetime%.txt
echo 3.2. Memorychip Information >> C:\SECURITY\%datetime%.txt
echo *************************************************************************** >> C:\SECURITY\%datetime%.txt
wmic /output:z.txt memorychip get BankLabel >> C:\SECURITY\%datetime%.txt
type z.txt >> C:\SECURITY\%datetime%.txt
for /f "tokens=2 delims==" %%a in ('wmic MEMORYCHIP get BankLabel /format:list') do set BankLabel=%%a
echo %BankLabel% >> C:\SECURITY\%datetime%.txt
echo.>> C:\SECURITY\%datetime%.txt
pause
http://stackoverflow.com/questions/10210553/cmd-is-somehow-writing-chinese-text-as-output
일단 위 링크구요.. 첫번째 답변 말고 두번째 답변에 A와 B 두 가지 방법이 제시되어 있는데, 그 중 B가 위 태무진님처럼 별도의 임시파일로 일단 받고 그걸 다시 type 해서 최종 결과 파일에 덧붙이는 식입니다.
근본적인 원인은, 기본적으로 명령창에서의 출력은 ANSI인데 WMIC의 출력이 리다이렉트될 때 유니코드로 출력이 된다는 거.. 그래서 최초 echo로 출력된 문자들이 ANSI코드인데 WMIC의 리다이렉트된 출력이 유니코드로 들어오니 하나의 파일 안에서 코드가 섞여서 그렇게 되는 거네요.
한편, A방법은 애초에 명령창 자체를 유니코드로 띄워서, WMIC 외의 다른 출력도 전부 유니코드로 해버리는 방법이네요. ㅎㅎ 즉, 파일 자체가 처음부터 유니코드로 생성되므로 크기는 커지지만, 일단 코드가 통일되어 있으니 보는데는 문제가 없다는 거죠. (바이너리 에디터로 보면 각 문자가 2바이트씩 잡혀 있는 게 보이겠지만요. ㅎㅎ)
태무진님께서 흰트를 주셔서 임시파일을 생성한 후 type을 이용해 임시파일 내용을 결과파일에 덧붙이는 식으로 문제를 해결하였습니다.
다시한번 감사의 말씀드립니다.^^