Ищем команду для запуска диалога / подсказки, чтобы открыть каталог текущего пользователя

507
RBT

В командной строке, если я ввожу команду, start .она просто открывает каталог текущего пользователя C:\Users\<current user name>в Windows 7. Но эта команда не работает из командной строки Windows. Может ли кто-нибудь помочь мне с этой командой, если она существует, чтобы открыть каталог текущего пользователя непосредственно из командной строки? В настоящее время я должен сначала открыть командную строку, а затем ввести эту команду, чтобы открыть нужный каталог в проводнике Windows.

Обновление : я понял, что start .команда из командной строки не всегда открывает каталог домашнего профиля пользователя. Это происходит, только если ваш текущий рабочий каталог в командной строке совпадает с каталогом домашнего профиля текущего пользователя. Итак, если бы я был в D:\моем приглашении оболочки, то он открылся бы D:\в проводнике вместоC:\users\<current user name>

1
`start` является внутренней командой` cmd`, и внутренние команды могут быть запущены только путем вызова cmd` для их выполнения, как в `cmd / c start .` или` cmd / c md NewDir`. AFH 7 лет назад 1
@AFH: Ваш ответ совершенно правильный. Вы, следовательно, заслуживаете кредита. Поместите свою информацию в ответ, а не комментарий. Тогда RBT должен принять ваш ответ, и вы можете получить и другие положительные голоса. (Я бы проголосовал, если бы увидел это.) TOOGAM 7 лет назад 0
Удалил мой ответ. Как справедливо предложено @TOOGAM, @AFH заслуживает похвалы. Требуемая команда для запуска из диалогового окна / приглашения «Выполнить» оказалась: «cmd / c start». RBT 7 лет назад 0

3 ответа на вопрос

2
AFH

Команда startявляется внутренней для cmd. Когда вы вводите команду cmd, это будет либо:

  • исполняемая программа (обычно .exe, но иногда с другими расширениями);
  • пакетный файл ( .batили .cmd); или же
  • внутренняя команда, обработанная в самом cmdкоде.

Все они по-разному обрабатываются Проводником и командой запуска Windows ( Win+ r): -

  • Исполняемый файл распознается как таковой и запускается немедленно.
  • Расширение пакетного файла распознается как связанное с cmd, для которого запланировано его запуск.
  • Windows не распознает внутренние команды cmd(или любую другую интерактивную программу), поэтому при вводе одной из них в поле команды «Выполнить» выдается ошибка «невозможно найти».

Эти cmdвнутренние команды могут быть выполнены из окна выполнения, но вы должны сказать Windows, чтобы запустить в cmdявном виде. Для вашей команды вы должны набрать:

cmd /c start . 

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

Большинство команд в cmdсписке справки являются внутренними, хотя некоторые из них, такие как find, sortи diskpartявляются внешними программами ( find.exeи т. Д.), Поэтому нет необходимости добавлять их cmd /cв поле выполнения: Windows распознает их как утилиты командной строки. и создайте командную оболочку для их запуска.

Всякий раз, когда cmdзапланировано выполнение команды (явной или явной), она будет недолгой, если команда не взаимодействует с пользователем, хотя любые другие программы, запущенные во время ее выполнения, могут сохраняться (как с startкомандой).

Очень подробное объяснение @AFH. Любил это! Просто любопытно еще одна вещь - переменные окружения. Как в диалоговом окне запуска можно открыть предопределенные пути, указанные переменными среды, такими как% programdata%,% appdata%,% windir%,% programfiles% и т. Д.? Здесь также диалог запуска использует командную оболочку для того, чтобы открыть места (указанные этими переменными среды) в окне проводника? RBT 7 лет назад 0
Нет, командная оболочка не задействована. Переменные среды, которые определены в Windows («Панель управления» -> «Система» -> «Расширенные настройки системы» -> «Переменные среды ...»), подставляются в поле выполнения Windows как в пути команды, так и в ее параметры, аналогично `cmd`; то же самое верно, когда вы вводите путь в проводнике. Вы также найдете множество экземпляров переменных среды в путях, определенных в реестре. AFH 7 лет назад 0
1
Ajay

Почему бы просто не использовать %USERPROFILE%вместо этого переменную среды ? Профиль пользователя

Нет необходимости запускать какой-либо процесс ( CMD.EXEили любой) только для того, чтобы открыть папку пользователя по умолчанию.

Во-первых, фактически мое первоначальное предположение, что команда `start .` при запуске из командной строки открывает каталог профиля пользователя, была * неправильной *. Команда `start .` просто открывает текущий путь оболочки (текущий рабочий каталог) в проводнике. По совпадению, когда вы открываете командную строку из командной строки, то по умолчанию она открывает каталог домашнего профиля текущего пользователя. и я запускал команду `start .` прямо там. Следовательно, я неправильно понял команду `start .` RBT 6 лет назад 0
Да. Это * * ответ. На самом деле позже я сам исследовал другую команду `% homepath%` из командной строки, которая делает то же самое. Но никогда не удосужился вернуться на этот пост. Я не уверен, почему есть две переменные окружения, которые указывают на один и тот же каталог, то есть каталог профиля текущего пользователя. RBT 6 лет назад 0
0
JosefZ

Чтобы сделать упущение в (почти исчерпывающем) ответе AFH : в диалоге Windows Run (вызывается Win+ r) точка останова .будет работать точно так, как рекомендованоcmd /c start .

Тем не менее, я не проверял точное поведение использования .в случае, когда cmd и по cmd /Dумолчанию другой рабочей директории, т.е. если последний изменяются командой AutoRun из реестра; подробности см cmd /?.

Я согласен, что `.` имеет тот же эффект, что и` cmd / c start .`, но он не работает таким же образом. То же самое верно, если вы замените `.` любым другим каталогом. Но вопрос не в том, как запустить Explorer в определенном каталоге, а в том, почему некоторые команды `cmd` не работают из окна запуска Windows. AFH 7 лет назад 0