Прочтите ответ на вопросе Как запретить интерпретатору команд Windows завершать выполнение пакетного файла при неправильном вводе пользователем? и замечания в приведенном ниже коде пакета, чтобы понять, почему этот код намного лучше для вашей задачи.
Обычно необходимо заключать всю строку аргумента в двойные кавычки, а не только ее части, как это видно ниже.
@echo off
setlocal EnableExtensions DisableDelayedExpansion
echo Type in the name of your folder and hit ENTER.
:UserPrompt
set "Folder="
set /P "Folder=Please type the folder name here: "
rem Has the user entered a string at all?
if not defined Folder goto UserPrompt
rem Remove all double quotes of user input string.
set "Folder=%Folder:"=%"
rem Was not only one or more double quotes entered by the user?
if not defined Folder goto UserPrompt
rem Create the folder with suppressing the error message.
md "%UserProfile%\Desktop\%Folder%" 2>nul
rem Could the folder name be created at all which means the user
rem input string was valid and the folder did not exist already?
if errorlevel 1 goto UserPrompt
rem Open the just created folder on user's desktop.
start "" "%UserProfile%\Desktop\%Folder%"
pause
rd "%UserProfile%\Desktop\%Folder%"
endlocal
вместо командной строки
start "" "%UserProfile%\Desktop\%Folder%"
также можно использовать
%SystemRoot%\explorer.exe "%UserProfile%\Desktop\%Folder%"
или используйте
%SystemRoot%\explorer.exe /e,"%UserProfile%\Desktop\%Folder%"
explorer.exe
является исключением из общего правила, заключающего строку аргумента в двойные кавычки. "/e,%UserProfile%\Desktop\%Folder%"
не будет работать, потому что в этом случае строка аргумента будет интерпретироваться как папка с недопустимым относительным путем к корневому каталогу текущего диска вместо опции /e
с папкой для открытия.
Но Windows Explorer не предлагает опций для определения положения и размера окна. Независимо от того, что пользователь использовал в прошлый раз и, следовательно, наиболее вероятно, что пользователь предпочитает его, Windows Explorer снова использует его при открытии окна Проводника для папки.
Разумеется, с помощью дополнительного кода можно было бы отправить в только что открытое окно проводника, являющееся окном верхнего уровня верхнего уровня, сообщение об изменении положения и размера окна. См. Например:
Чтобы понять используемые команды и то, как они работают, откройте окно командной строки, выполните там следующие команды и полностью прочитайте все страницы справки, отображаемые для каждой команды.
echo /?
endlocal /?
if /?
md /?
pause /?
rd /?
rem /?
set /?
setlocal /?
start /?