Откройте окно командной строки, запустите for /?
и внимательно прочитайте выходную информацию.
Там объясняется %~xI
(только расширение файла %I
) и %~nI
(только имя файла %I
) и %~nxI
(имя файла с расширением %I
).
Поэтому нецелесообразно использовать x
в качестве переменной цикла, поскольку для командного процессора Windows непонятно, что имеется в виду с %%~nx
. Избегайте букв нижнего регистра как переменную цикла.
Как переменные цикла чувствительны к регистру, использовать, например,
for %%X in (*.imd) do imdu.exe /b "%%X" "%%~nX.raw"
или мой любимый для таких простых петель
for %%# in (*.imd) do imdu.exe /b "%%#" "%%~n#.raw"
Не забывает двойные кавычки имен файлов как файлы может содержать пробелы или круглые скобки в именах файлов, для которых требуются двойные кавычки вокруг имен файлов. Команда FOR содержит в этом прецеденте имя файла всегда без окружающих двойных кавычек в переменной цикла.
'for %% x in (*.imd) do ECHO imdu/b %% x %% ~ nx.raw' показывает правильный результат для меня. Кстати, я думаю, что команда 'IMDU' выполняет некоторые дополнительные _contents_ преобразования в дополнение к переименованию, не так ли? – JosefZ