Look, automated testing is *development*. It is nearly impossible to create a utility that is record-and-playback, but sophisticated enough to handle the complex scenarios that arise out of all but the very simplest of automated tests. Want to reuse code in another test? I hope your record/playback tool understands subroutines and/or functions. Need to handle multiple possible outcomes for a given user action? Congratulations, your tool now needs to understand branching and Boolean logic. Have to perform the same steps multiple times in a test? Now you need looping constructs.
Efficient code requires those pieces, and once you've grown those things into your record/playback tool, you're programming, whether you call it that it not. And designing a language is *hard*. Knowing that, isn't it better to rely on a language that has years, and in some cases decades, of practical design and real-world use behind it?
I'm not just speaking theoretically, by the way. At a previous employer, I helped design and build a keyword-based automation framework that had "usable by non-programmers like business analysts and testers with no development experience" as one of its stated goals. By the time we finished, we had developed an entire language, complete with our own IDE and debugger. After doing the cost-benefit analysis in hindsight, it would've been cheaper and easier to train other users how to program, and use the development tools available to everyone. Plus, we would've had the support of our development team in running our tests.
Of course, it's probably that I'm just stupid and that the problem really is much easier than I make it out to be. I'm not the smartest guy out there, by any measure. Incidentally, this is why you should take what I say with a grain of salt, because I really am an idiot. But I'm pretty sure that not *all* of the code I contributed to the half-million lines of code making up that framework are crappy, and I *know* I had people smarter than me working on it too.
Bottom line, for me, is that record/playback tools almost always produce inelegant and unmaintainable code. No, rerecording the script doesn't count as maintainable to me. It's entirely possible that the perfect record/playback tool exists, but I've never seen it, and I do try to keep up with the state of the art in my industry. As for elegance, if one isn't striving for elegant solutions to the problems we face as software professionals, I'd submit that one is in the wrong profession.
I'm glad what you're using works for you and your company. I'm self-aware enough to be sure the approach your company takes would never work for me. But again, I'm an idiot, so you'll probably see me taking swipes at record/playback tools again at some point. Feel free to ignore me; most do, and are happier for it.
This is my point exactly. Let me ask you this: Is it more efficient for a developer to write code for a task in one language or two, all other things being equal? You've created a system whereby you're coding steps in one language, and using shell code (batch files) for "functions" and "loops". Surely you can see the inefficiencies in that as a developer, right? Additionally, you're lucky your organization has decided that you're only going to test on Windows. If you ever decide you need testing on mobile platforms, or, say, Safari 6, your batch files will have to be reworked into something cross-platform.
"The other thing I wondered, and they wonder, is whether this is just programmers wanting to do the coolest thing rather than the cheapest, fastest, most reliable things. [...] I know my bosses think part of this is me wanting to learn webdriver because it would be cooler, more interesting than sticking ide files in batches, and they have a point."
You've already seen how hard refactoring is under your current framework. If your own experience doesn't convince you or your bosses, nothing I say will do so. It's not about "wanting to learn [what's] cooler," it's about being efficient and productive. It comes down to where you want to sink the cost. Using WebDriver (or any code-based tool) is going to require the cost up front in training and infrastructure. Using Selenium IDE (or any record/playback-based tool) is going to require the cost later when the tests need to be maintained. It's been my experience that the overall cost of the former is lower than the cost of the latter, often dramatically so.