我正在写一个批处理脚本,通过查找代码文件的目录中的每个文件并以某种方式修改它们。完成该任务后,我试图在一个包含大约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