Первая рекомендация: Удалите (или закомментируйте) свой @echo off
, чтобы вы могли видеть, что он делает, когда он работает. Это, скорее всего, сразу позволит понять, почему он не работает так, как вы ожидаете. После того как вы это работает так, как вы хотите, добавьте @echo off
назад в
Второй рекомендации:. Вам может потребоваться некоторые проверки, чтобы убедиться, что ваш %dir%
пригоден к команде cd
. Например, если каталог %dir%
фактически не существует, команда cd
завершится с ошибкой. Или, если ваш ввод содержит букву диска (например, E:\newFolder\
), команда cd
не получит вас там, если вы не используете переключатель /d
.
Третья рекомендация: Это хорошая практика, чтобы поместить ваши имена путей и переменные пути в кавычки, например:
set /p "dir=enter directory:"
Вот альтернативный подход, который я предпочитаю, что избежать cd
в пакетных файлах вообще. С некоторой проверкой ввода, введенной.
:SetDriveLetter
set /p "drive=enter drive letter:"
:: check for colon following drive letter, add it if it's not there
:: (add whatever other input validation you think necessary)
if not "%drive:~1%"==":" set drive=%drive%:
if not exist "%drive%\" (
echo invalid drive.
goto SetDriveLetter
)
:SetDirectory
set /p "dir=enter directory:"
:: check for backslash preceding the directory, remove it if it's there
:: (add whatever other input validation you think necessary)
if ^%dir:~0,1%==^\ set dir=%dir:~1%
echo This will create folders in %drive%\%dir%\
choice /m "Continue with this operation?"
if errorlevel 2 (
echo Operation cancelled by user.
goto End
)
:: You can use the `md` command to create multiple directories in one line.
:: I prefer to separate them out, one per line, for better readability.
md "%drive%\%dir%\assets
md "%drive%\%dir%\assets\folder"
md "%drive%\%dir%\assets\folder2"
md "%drive%\%dir%\assets\addons"
md "%drive%\%dir%\assets\addons\folder"
md "%drive%\%dir%\assets\addons\folder2"
:End
Просьба привести примеры записей, которые вы сделали в приглашении «ввести каталог». Немного трудно оглянуться за плечо отсюда ... – Magoo