For what it's worth, the most popular options I've seen at a certain large, Redmond based software company (in rough order of popularity):
- Batch files
- Perl
- Windows Scripting Host (Javascript)
- Tiny exes
Much less popular:
Note that Perl doesn't require an install, it only requires a few environment variable updates, so it's easy to just shove a full distro into your source control system along with other tools.
My personal preference would be to avoid batch files as much as possible, even with the most careful and rigorous of processes the benefit for the cost is just not worth it. You'll never end up with a satisfactory solution if you use batch. Perl and Javascript are tempting to use but there are troublesome fundamental deficiencies which leave a lot to be desired, without strong development guidelines these methods will more likely than not lead to low quality code.
Python and Powershell are good candidates but I'm not sufficiently adept with them and, more importantly, a lot of people aren't that familiar with them. Perhaps that's not a good enough excuse. Tiny exes can have many problems as well and require discipline and process in order to ensure that the source is always checked in, that the exes conform to certain UI norms (e.g. they have useful help if you run -? or /?), that they have an obvious owner, that the process for updating the exes is discoverable, etc.
In general I think I prefer tiny .exes built with C# because I get a good combination of relatively low overhead with the ability to do quality development. I'm not sure this would be a good policy in general, I know I'll make sure my tools conform to certain best practices that avoid some of the pitfalls of .exe based tools but I'm not convinced others will be so careful. If I could decree standardization on one particular scripting technology regardless of the costs I'd probably pick Powershell, though it has a pretty steep learning curve.