코드 파일을 찾는 디렉토리의 모든 파일을 거쳐 어떤 방식 으로든 수정하는 배치 스크립트를 작성하고 있습니다. 이 작업을 마친 후에는 약 6,000 개의 파일이있는 큰 디렉토리에서 실행하려고했습니다. 스크립트에서 약 40 분이 지났고 명령 프롬프트에서 많은 메모리 부족 오류가 발생했습니다. 작업 관리자를 보면서 스크립트를 실행하면 프로그램이 루프 반복 당 약 1MB의 속도로 메모리를 사용하고있는 것으로 나타났습니다. 그래서 당연히 내가 잘못한 것을 생각한 후에 문제를 격리하기 위해 작성한 모든 코드를 잘라 냈습니다. 하지만 for 루프를 제외하고는 빈 파일이 남아 있었고 문제는 여전히 지속되었습니다! 나는 실제로 그것을 아래로 트림 할 수 있었다루프 일괄 처리에서 메모리 누수가 있습니까?
@echo off
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set directory=%CD%
for /R "%directory%" %%a in (*.c *.cpp *.h *.idl) do (
set currentDir=%%~dpa
pushd !currentDir!
popd
)
:
@echo off
for /R "%CD%" %%a in (*) do echo
그리고 문제가 계속 지속 여기
내가 말했듯이 나는 상당히 큰 디렉토리에서 실행 된 것입니다.
일괄 처리 루프에 메모리 누수가 있습니까? 아니면 잘못된 것입니까?
는 내가 테스트하고 문제가 계속이 너무 많이 해결 방법으로 답변하지 않습니다 서비스 팩 3
pushd 명령 바로 다음에 popd 란 무엇입니까? 그건 나에게 의미가 없다. 당신은 그것으로부터 아무것도하지 않을 것입니다. (단지 2 개의 디렉토리 사이를왔다 갔다합니다). – steenhulthin
나는 실제 코드가하는 것을 모방하고있다. 전체 파일에는 푸시와 팝 사이에 많은 것들이 있습니다. – Maynza
좋아요, 추가해야한다고 생각합니다 ... 코드가 표시되지 않은 곳입니다. – steenhulthin