EDIT: to read all materials, you don't want to use bpy.ops.wm.append
but rather you want to use library management code. Updated the answer to reflect this.
There is no automatic way to do this. The manual way is to open a new blend file and append the materials from each of the 100 other files to that file and then save it.
You could write a Python script to do that. If, for instance, all of the blend files were in the same directory, the script could iterate through each file, appending every material from that file using bpy.data.libraries.load
Here's an example of doing that modified from the matlib manager addon
with bpy.data.libraries.load(blend) as (data_from,data_to):
data_to.materials = data_from.materials
Note that this is equivalent to linking the material, but now you have a list of names. If you want to append instead, you would then go through the list and call bpy.ops.wm.append
for each material.
Here is the starting point for code to accomplish this. It's only a starting point because it doesn't handle the error cases, like not being able to open a given blend file and it doesn't do any filtering.
import bpy
from pathlib import Path
blendfilespath = Path(PATH_TO_MATERIALS_DIRECTORY)
for file in blendfilespath.glob("*.blend") :
file_path = Path(file)
inner_path = "Materials"
with bpy.data.libraries.load(str(file_path)) as (data_from, data_to):
data_to.materials = data_from.materials
for linked_material in data_to.materials:
object_name = linked_material.name
bpy.ops.wm.append(
filepath=str(file_path / inner_path / object_name),
directory=str(file_path / inner_path),
filename=object_name
)