2012-09-26 3 views
1

실행중인 배치 파일에서 다른 파일 출력을 만들려고합니다. 즉, 원시 내용이 내부에 있음을 의미합니다. 이 배치 파일 안에는 콘텐츠의 끝에 추가되는 "끝"또는 고유 단어가 발견 될 때까지 while 또는 for 루프가 수행됩니다.내용이 배치 코드 인 파일 만들기

정보를 노출 할 수있는 파일 (중요한 콘텐츠가 있음)을 단순히 복사하지 않으려합니다. 그런 다음 배치를 통해 파일을 호출하여 실행하십시오.

code: 
-start of batch 
-check if the file a.txt exist del a.txt 
-starts to create the a.txt file 

>start of content: 
>"the quick brown fox jump over the lazy dog" 
>lynx: unique word 
>end of content 

-writes the content to a.txt using for loop or while until it finds the unique word 
-runs the a.txt file 
-deletes the a.txt file 
-exit 

누군가 도움을 줄 수 있기를 바랍니다. 고맙습니다! 누군가가 더 좋은 방법을 제안 할 수 있다면. 고맙겠습니다

+0

왜 새 배치 파일을 만들어야합니까? 왜 단순히 코드를 기존 배치 파일 내에서 함수로 부르는 것이 좋을까요? – dbenham

답변

0

for 명령 자체가있는 행에는 따옴표가 필요합니다. 그들은 모든 커스터드을 전환 한 후 인용 부호를 포함하는 라인 ... 현재 형성이되지 수

을 명중 할 때까지 루프를 들어

잘 작동합니다.

어쩌면 vbscript를 대신 사용해보십시오. line[n] 방법을 사용

+0

따옴표를 제거하면 어떻게됩니까? 작동할까요? – user1701414

+0

@ user1701414 - 실제로 따옴표는 그다지 큰 거래가 아닙니다. 모든 것을 옆으로 돌리는 것은 <> | << 같은 방향 전환과 파이프 문자입니다. 그들이 거기 있다는 것을 알더라도 그들은 매우 어려울 수 있습니다. –

0
@echo off 
setlocal enabledelayedexpansion 
if exist a.txt del a.txt 

copy nul a.txt > nul      & :: Not needed, but in your specs 

set line[1]=This is what you asked for. 
set line[2]=Not really the best method. 
set line[3]=But it will work. 
set line[4]= 
set line[5]=linux 
set line[6]=[end] 

for /l %%i in (1,1,1000) do (
    if  "!line[%%i]!"=="linux" goto :end 
    if  "!line[%%i]!"=="[end]" goto :end 
    if  "!line[%%i]!"=="" echo.>>a.txt 
    if NOT "!line[%%i]!"=="" echo !line[%%i]!>>a.txt 
) 

:end 
:: Broken Out Of Loop 

ren a.txt a.bat 
call a.bat 
del a.bat 

메모리 오히려 낭비, 나는 한 파일에서 다른 파일로 데이터를 이동 권하고있다.

관련 문제