DBCC SHRINKFILE works a treat for a few months. If autogrow is on then high frequency shrinking and expanding of the database files will cause extensive OS fragmentation, so your DBCC DBREINDEX will be of little value trying to eliminate extent level fragmentation.
It is better to set your filegroups to a size that allows 6-12 months of growth, and set autogrow off. Fixed size filegroups never fragment at the OS level. SQL server will perform block reads of data pages only if they are logically and physically contiguous.
The risk is that fixed size filegroups will fill up, so set an alert that emails you when your filegroup is > 90% full.
