Perhaps "control" and "battle" are the wrong model. Some broad, general suggestions based on what experts have said:
Respect yourself: If you are doing something over and over again despite not wanting to, there probably is a good reason for it, a legitimate healthy need, even if the expression of that need is unhealthy. Respect that need and its priority as legitimate and serious. Find a healthy, productive way to address it. It should be no surprise that the response is unhealthy: Imagine if someone else had a real need and your response was to ignore it and abuse them constantly for acting on it; how would that person behave?
Know yourself: Know your strengths and limits; don't put yourself in position to fail and then abuse yourself for failing. Again, imagine you were someone else's manager, you knew their limitations, and yet you kept putting them in position to fail and then abused them over the results. That would be a horrible failure of management, not of the employee.
Have compassion for yourself. Like every human ever to live, you also will live your whole life with serious flaws.
Nurture yourself: Work together (so to speak) for change. That's how real change happens; that's how good parents, good teachers and mentors, and good managers accomplish things. Fighting with people just entrenches the problem.
....
That feels a little too ... bullsh*tty to post - loose, imprecise ideas with little serious foundation included; my apologies. But I'm not sure how to tighten it up, don't have links at my fingertips, and posting it seems better than not.