Did you note the following in the document you referenced?
Disabling the account permanently disables up to 100 external users associated with the account and removes them from all communities, groups, teams... ...Additionally, roles and groups associated with the account are permanently deleted and you won’t have the option to restore them from the Recycle Bin.
The second part of that is very different from just disabling a Community User. You mention
"run a batch every x hours to Disable Customer Accounts". That's very different than merely disabling a Community User. Please be clear on which one of these (or both) it is that you want to do. Disabling an Account has a much stronger cascading effect. That's the essence of what the document you linked to was stating. Disabling a community user, has far less of a cascading effect. Yet, neither is ever deleted.
So, which is that you want to disable, the Account, the User or both? They can definitely be disabled using a queueable class that schedules itself to run again in "x" number of hours or a schedulable class, etc provided you have a means of marking the account or users that you want to disable from your community. All it would take is a checkbox field that you could query against or some other criteria that marks them for batch disable.
In response to your comments, you're asking a very broad question here that's really beyond the scope of what I can answer in this venue. Essentially, you'll want to run a batch or queueable class that queries for the flags you'd be setting then goes through the steps necessary to deactivate an account in your org when it finds them. It would also need to query for all the related Opportunities, Cases, Activities, Contacts, Community Users, etc. Your org may have specific settings on how it wants to handle each of those when an account is deactivated. You'll need to discover what those are as each org may handle those differently.
As you're aware, some records cannot be deleted, instead they can only be deactivated. Accounts, Contacts and Users fall into that category. Opportunities fall into a gray area that's sometimes a function of Product2 and also of Quotes and Orders. The same goes for Activities. Your batch class will need to process each of those types of records according to the criteria that applies to them.
Once you write your code, should you encounter issues with it, that would be the time to post for help with specific issues that you're encountering as each object has it's own issues to deal with.