Интерактивные проблемы с пакетными файлами - PullRequest
0 голосов
/ 03 марта 2012

Я только начал пытаться научиться писать командные файлы, и я думаю, что у меня есть некоторые или большинство основ, но я просто не могу понять это.

Возможно ли, чтобы пакетный файл попросил пользователя ввести имя подпапки, а затем изменить текущий каталог на эту подпапку?

Например, скажем, мой текущий каталогC: \ Folder.В этой папке есть подпапки Sub 1, Sub 2 и Sub 3. Если пользователю необходимо перейти к одной из этих папок, но она может меняться при каждом запуске файла, можно ли пользователю ввестиимя подпапки и затем пакетный файл меняет текущий каталог на эту папку?

Может быть что-то вроде:

CD C:\Folder

SET /p desiredFolder = Enter the name of the sub-folder you would like to go to: 
Sub 1, Sub 2, or Sub 3

---User enters Sub 1 and hits enter---

CD C:\Folder\%desiredFolder%

Заранее благодарю за любую помощь!

Ответы [ 2 ]

2 голосов
/ 09 марта 2012

Вы можете даже попробовать:

@echo off
:start
set desiredFolder=
dir /AD /W /B
echo.---------------------------------------------------------
set /p desiredFolder=Enter the name of the folder you would like to go to: 
echo %CD%\%desiredFolder%
IF NOT EXIST %CD%\%desiredFolder% echo..\%desiredFolder% does not exist, try again. 
IF NOT EXIST %CD%\%desiredFolder% echo.--------------------------------------------------------- & goto start

Затем используйте одно из следующих после строки выше в зависимости от того, что вы хотите сделать

start cmd.exe /K chdir %CD%\%desiredFolder%
REM if you want to start your command window in a new directory

cmd.exe /K chdir %CD%\%desiredFolder%
REM if you want to change directories in your current command window

start %CD%\%desiredFolder%
REM if you want to open the folder in windows explorer
2 голосов
/ 03 марта 2012

Вы почти закончили, только пара деталей отсутствует:

1- При использовании любой формы команды SET НЕ включайте пробелы перед знаком равенства;в противном случае имя переменной включает пробел:

SET VAR = VALUE
ECHO %VAR%               show nothing
ECHO %VAR %              show " VALUE"

2- Если имя папки может содержать пробелы, вы должны заключить все имя папки в кавычки:

CD C:\Folder

SET /p desiredFolder=Enter the name of the sub-folder you would like to go to: 
Sub 1, Sub 2, or Sub 3

---User enters Sub 1 and hits enter---

CD "C:\Folder\%desiredFolder%"
...