目录列表在批处理脚本中执行时很慢

你好,StackOverflow成员!

我试图运行以下命令:

REM the below line lists the folder names that are to be read FOR /F "TOKENS=* DELIMS=" %%d in (%start_dir%\folder_list.txt) DO ( ECHO Entering into: %%d Directory REM The below line lists the folders and all of it's subfolders. It than outputs it to a file. FOR /F "TOKENS=* DELIMS=" %%e in ('DIR /s "%work_dir%\%%d"') DO ( ECHO %%e>>%start_dir%\tmp_folder\%%d.size ) ) 

上面的代码工作。

这是问题:如果我有只有几GB的文件夹,那就好了。

如果我有一个超过100GB的文件夹,脚本将需要大约一个小时才能输出DIR / S >> %% d命令。

当我在一个大约150GB的个人文件夹上运行时:Dir / s“150GB_Folder”>> dir_ouput_file.txt大约6-10秒完成。

我的问题是:为什么在脚本中输出DIR /S>>whatever.txt需要一个小时,而不是在脚本中只需要几秒钟?

先谢谢你!

这是一个错误for地方,用命令解析大量行会导致巨大的延迟。
解决办法是用信息创建一个文件,然后读取文件。

 REM the below line lists the folder names that are to be read FOR /F "TOKENS=* DELIMS=" %%d in (%start_dir%\folder_list.txt) DO ( ECHO Entering into: %%d Directory REM The below line lists the folders and all of it's subfolders. It than outputs it to a file. DIR /s "%work_dir%\%%d" >%temp%\temp.tmp FOR /F "TOKENS=* DELIMS=" %%e in (%temp%\temp.tmp) DO ( ECHO %%e>>%start_dir%\tmp_folder\%%d.size ) del %temp%\temp.tmp )