Windows 简单批处理 "Multithread" 处理
Windows Simple Batch "Multithread" Processing
您好,我的截止日期很紧迫,所以我会 post 在进行搜索时在这里提出我的问题..这是我的脚本,它所做的只是查看 每个文件一个文件夹,并根据[=28的值创建不同的"list.txt" =] 格式为 CSV.txt(文件名,大小):
FOR %%I in (%inputDir%\*.*) DO (
FOR /F "tokens=1,2" %%A IN (%tree_size%) DO (
IF %%~nxI==%%A IF %%B LEQ 10.000 (
echo %%~dpnxI >> %inputDir%[=12=]_10.txt)
IF %%~nxI==%%A IF %%B GTR 10.000 IF %%B LEQ 25.000 (
echo %%~dpnxI >> %inputDir%_25.txt)
IF %%~nxI==%%A IF %%B GTR 25.000 IF %%B LEQ 40.000 (
echo %%~dpnxI >> %inputDir%_40.txt)
IF %%~nxI==%%A IF %%B GTR 40.000 IF %%B LEQ 55.000 (
echo %%~dpnxI >> %inputDir%_55.txt)
IF %%~nxI==%%A IF %%B GTR 55.000 (
echo %%~dpnxI >> %inputDir%_plus.txt)
)
)
我的目标是修改此代码以使用 多线程处理,这似乎是在 Windows 7.[=13= 上使用批处理脚本的一个选项]
你的问题是一种方法。
因为你有 50,000 个文件并假设你的 tree_size
文件中有 50,000 行(你没有给我们提供样本)那么你正在阅读 tree_size
50,000 次并执行if
树 50,000 * 50,000 = 2,500,000,000 次。每个比较块每次进行 5 次测试 = 12,500,000,000 次测试。
试试这个:
FOR /F "tokens=1,2" %%A IN (%tree_size%) DO if exist "%inputDir%\%%A" (
IF %%B LEQ 10.000 (
echo %inputDir%\%%A >> %inputDir%[=10=]_10.txt
) else (
IF %%B LEQ 25.000 (
echo %inputDir%\%%A >> %inputDir%_25.txt
) else (
IF %%B LEQ 40.000 (
echo %inputDir%\%%A >> %inputDir%_40.txt
) else (
IF %%B LEQ 55.000 (
echo %inputDir%\%%A >> %inputDir%_55.txt
) else (
echo %inputDir%\%%A >> %inputDir%_plus.txt
)))))
)
应该只使用 50,000 个内循环周期就可以完成同样的事情。
您好,我的截止日期很紧迫,所以我会 post 在进行搜索时在这里提出我的问题..这是我的脚本,它所做的只是查看 每个文件一个文件夹,并根据[=28的值创建不同的"list.txt" =] 格式为 CSV.txt(文件名,大小):
FOR %%I in (%inputDir%\*.*) DO (
FOR /F "tokens=1,2" %%A IN (%tree_size%) DO (
IF %%~nxI==%%A IF %%B LEQ 10.000 (
echo %%~dpnxI >> %inputDir%[=12=]_10.txt)
IF %%~nxI==%%A IF %%B GTR 10.000 IF %%B LEQ 25.000 (
echo %%~dpnxI >> %inputDir%_25.txt)
IF %%~nxI==%%A IF %%B GTR 25.000 IF %%B LEQ 40.000 (
echo %%~dpnxI >> %inputDir%_40.txt)
IF %%~nxI==%%A IF %%B GTR 40.000 IF %%B LEQ 55.000 (
echo %%~dpnxI >> %inputDir%_55.txt)
IF %%~nxI==%%A IF %%B GTR 55.000 (
echo %%~dpnxI >> %inputDir%_plus.txt)
)
)
我的目标是修改此代码以使用 多线程处理,这似乎是在 Windows 7.[=13= 上使用批处理脚本的一个选项]
你的问题是一种方法。
因为你有 50,000 个文件并假设你的 tree_size
文件中有 50,000 行(你没有给我们提供样本)那么你正在阅读 tree_size
50,000 次并执行if
树 50,000 * 50,000 = 2,500,000,000 次。每个比较块每次进行 5 次测试 = 12,500,000,000 次测试。
试试这个:
FOR /F "tokens=1,2" %%A IN (%tree_size%) DO if exist "%inputDir%\%%A" (
IF %%B LEQ 10.000 (
echo %inputDir%\%%A >> %inputDir%[=10=]_10.txt
) else (
IF %%B LEQ 25.000 (
echo %inputDir%\%%A >> %inputDir%_25.txt
) else (
IF %%B LEQ 40.000 (
echo %inputDir%\%%A >> %inputDir%_40.txt
) else (
IF %%B LEQ 55.000 (
echo %inputDir%\%%A >> %inputDir%_55.txt
) else (
echo %inputDir%\%%A >> %inputDir%_plus.txt
)))))
)
应该只使用 50,000 个内循环周期就可以完成同样的事情。