我正在寫一個批處理腳本,通過查找代碼文件的目錄中的每個文件並以某種方式修改它們。完成該任務後,我試圖在一個包含大約6000個文件的大目錄上運行它。大約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
和問題仍然存在。
批處理循環中是否存在內存泄漏或者我只是在做錯什麼?
我運行Windows XP 32位Service Pack 2中,雖然我已經測試並確認問題仍然存在在Service Pack 3
什麼是pushd命令後點POPD吧?這對我來說沒有意義。你將不會做任何事情(只要在兩個目錄之間來回切換)。 – steenhulthin 2011-06-13 12:51:06
我在模擬我的實際代碼的功能。在完整的文件中,推動和彈出之間有很多東西。 – Maynza 2011-06-13 12:52:42
好吧,我認爲你應該添加......沒有顯示代碼的地方。 – steenhulthin 2011-06-13 12:54:00