1

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

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

3 ответа3

2

Команда 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 ).

1

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

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

0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .