1. is there any reason why you need in the tests to use test.bat and call it instead of just using the command? looks to me it complicates the test 2. from the failures you have between various windows version, since the various windows version don't handle the space before the redirection '>' similarly, one option would be to not add it (not fully tested), or as another option, to add the @or_broken@ sequence 3. in the spirit of 1. and 2., tried the following comands `echo @echo start> start.bat` followed by `start.bat`, with the changes if this MR applied, to cmd.exe.and got a stack overflow. On windows and on wine without this MR changes, it opens a new command window. This is a regression (likely by start.bat being called instead of start.exe at some point). 4. we also need every single commit to not break the tests... this is not the case here (we want to be able later on to bisect to find a regression point). The "cleanest" way (from a review perspective) is to: add the tests, potentially marking them with @todo_wine@ for the ones which fail in wine; then in next commits, fix some items, and remove (in the same commit) the tests that now succeed (remove the @todo_wine@ mark). So that it's very clear which tests are fixed by a given change. It can be very tedious esp. in cmd.exe testing so, you could reverse the logic, by fixing the code in first commits then add the tests that would have failed without the changes