При использовании команды `pause` в командном скрипте окно закрывается, потому что команда `pause` ожидает ввода от пользователя для продолжения выполнения скрипта, а после нажатия любой клавиши окно закрывается.
Чтобы получить имя файла с расширением, хранящееся в переменной с использованием цикла `for` в коде на cmd, можно использовать следующий код:
```
@echo off
set "filename=myfile.txt"
for %%a in ("%filename%") do (
set "extension=%%~xa"
)
echo %extension%
```
Чтобы исправить код и сделать так, чтобы окно командной строки не закрывалось сразу после запуска скрипта, можно добавить команду `pause` в конце скрипта, например:
```
@echo off
echo Hello, World!
pause
```
Это заставит окно командной строки ждать, пока пользователь не нажмет любую клавишу, перед тем как закрыть его.