I've been using the %~sI method of converting a batch file argument from a long file name (with potential spaces) into a short file name. This has worked well for ages but I've not run into a problem where a specific directory path won't convert properly. E.g. If I have the following path: d:\app\administrator\product\11.1.0\client_1\ Running the following produces the wrong result: set O=%~s1 Produces d:\app\ADMINI~1\product\111~1.0\client_1nt_1 Notice the extra nt_1? Does anyone know where that comes from and how to avoid it?