In a large heavy skillet over medium heat, cook the bacon until just crispy. Remove the bacon from the pan, and set it onto a paper towel to drain. Once dry, chop it into small bits. Reserve the bacon fat in the pan.
Blend flour, salt, and pepper together in large bowl. Whisk in eggs and milk, forming soft batter. Mix in half of herbs
Bring large pot of salted water to boil. Butter a large bowl. Working with 1/3 cup batter at a time and using rubber spatula, press batter directly into boiling water through 1/4-inch holes on coarse grater, strainer, or wide ladle. Stir spaetzle to separate and boil 2 minutes. Using a fine sieve, scoop spaetzle from pot, drain well, and transfer to buttered bowl.
Melt 2 tablespoons butter with the bacon fat in the skillet over medium heat. Add mushrooms and sauté until beginning to soften, about 4 minutes. Add shallots and sauté until beginning to soften, about 5 minutes.
Add remaining 2 tablespoons butter and spaetzle. Sauté until the spaetzle begin to brown, stirring often, about 5-10 minutes. Mix in the remaining herbs and bacon. Season with salt and freshly ground pepper.