Go to your cave and remove all the items you want to keep, then sleep to save your game.
Go here and make a back up of the whole save folder: \users\ [name] \AppData\Roaming\StardewValley\Saves\YourName_1234567890.
In that folder will be a file that has the same name as the folder. Open that file in a text editor (I use notepad++ and set the language to XML).
In your save file, search for <eventsSeen>. Between <eventsSeen> and </eventsSeen>, find and delete <int>65</int> only delete it in that section and leave everything else. This will reset the event so Demetrius visits us again.
Deleting mushroom boxes (you can skip this step if you are changing from bat->mushroom).
Search for <GameLocation xsi:type="FarmCave"> in the save file. You need to delete the entire <objects> section (from <objects> to </objects>) and replace it with <objects />. It's about 3 pages of code about mushrooms and mushroom boxes.
The "FarmCave" section should look like this when you are done:
<GameLocation xsi:type="FarmCave"><characters /><objects /><terrainFeatures /><debris /><name>FarmCave</name><waterColor><R>60</R><G>100</G><B>127</B><A>127</A><PackedValue>2139055164</PackedValue></waterColor><isFarm>true</isFarm><isOutdoors>false</isOutdoors><isStructure>false</isStructure><ignoreDebrisWeather>false</ignoreDebrisWeather><ignoreOutdoorLighting>false</ignoreOutdoorLighting><ignoreLights>false</ignoreLights><numberOfSpawnedObjectsOnMap>0</numberOfSpawnedObjectsOnMap></GameLocation>
Then just save the file and load your game, Demetrius should visit you the moment you leave your house and let you choose your cave again.