Инструмент для командной строки "закладки" на окнах? - PullRequest
12 голосов
/ 28 августа 2008

Я ищу инструмент, который позволяет мне указать некоторые папки как «закладки» и затем обращаться к ним в командной строке (в Windows XP) через ключевое слово. Что-то вроде:

C:\> go home
D:\profiles\user\home\> go svn-project1
D:\projects\project1\svn\branch\src\>

В настоящее время я использую кучу пакетных файлов, но редактировать их вручную - непростая задача. В Linux есть cdargs или закладок оболочки , но я ничего не нашел в Windows.


Спасибо за предложение Powershell, но мне не разрешено устанавливать его на мой компьютер на работе, поэтому это должно быть "классическое" решение cmd.exe.

Ответы [ 8 ]

23 голосов
/ 28 августа 2008

То, что вы ищете, называется DOSKEY

Вы можете использовать команду doskey для создания макросов в интерпретаторе команд. Например:

doskey mcd=mkdir "$*"$Tpushd "$*"

создает новую команду «mcd», которая создает новый каталог, а затем переходит в этот каталог (в этом случае я предпочитаю «pushd», а не «cd», потому что позже я могу использовать «popd», чтобы вернуться туда, где я был) раньше)

$ * будет заменен на остаток от командной строки после макроса, а $ T используется для разделения двух разных команд, которые я хочу оценить. Если бы я напечатал:

mcd foo/bar 

в командной строке будет эквивалентно:

mkdir "foo/bar"&pushd "foo/bar"

Следующим шагом является создание файла, содержащего набор макросов, которые затем можно импортировать с помощью параметра / macrofile. У меня есть файл (c: \ tools \ doskey.macros), который определяет команды, которые я регулярно использую. Каждый макрос должен быть указан в строке с тем же синтаксисом, что и выше.

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

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Command Processor \ AutoRun и установите значение doskey / macrofile "c: \ tools \ doskey.macro". Это обеспечит автоматическую предопределенность ваших макросов при каждом запуске нового интерпретатора.

Дополнительные мысли: - Если вы хотите сделать другие вещи в автозапуске (например, установить параметры среды), вы можете разделить команды с амперсандом. Мой выглядит так: set root = c: \ SomeDir & doskey / macrofile "c: \ tools \ doskey.macros" - Если вы предпочитаете, чтобы настройки автозапуска были установлены для каждого пользователя, вы можете использовать узел HKCU вместо HKLM. - Вы также можете использовать doskey для управления такими вещами, как размер истории команд. - Мне нравится заканчивать все мои навигационные макросы с помощью \ $ *, чтобы я мог связать все вместе - Будьте внимательны при добавлении кавычек в макросы, если вы хотите иметь возможность обрабатывать пути с пробелами в них.

5 голосов
/ 14 апреля 2016

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

@ECHO OFF
REM Source found on https://github.com/DieterDePaepe/windows-scripts
REM Please share any improvements made!

REM Folder where all links will end up
set WARP_REPO=%USERPROFILE%\.warp

IF [%1]==[/?] GOTO :help
IF [%1]==[--help] GOTO :help
IF [%1]==[/create] GOTO :create
IF [%1]==[/remove] GOTO :remove
IF [%1]==[/list] GOTO :list

set /p WARP_DIR=<%WARP_REPO%\%1
cd %WARP_DIR%
GOTO :end

:create
IF [%2]==[] (
  ECHO Missing name for bookmark
  GOTO :EOF
)

if not exist %WARP_REPO%\NUL mkdir %WARP_REPO%
ECHO %cd% > %WARP_REPO%\%2
ECHO Created bookmark "%2"
GOTO :end

:list
dir %WARP_REPO% /B
GOTO :end

:remove
IF [%2]==[] (
  ECHO Missing name for bookmark
  GOTO :EOF
)
if not exist %WARP_REPO%\%2 (
  ECHO Bookmark does not exist: %2
  GOTO :EOF
)
del %WARP_REPO%\%2
GOTO :end

:help
ECHO Create or navigate to folder bookmarks.
ECHO.
ECHO   warp /?          Display this help
ECHO   warp [bookmark]      Navigate to existing bookmark
ECHO   warp /remove [bookmark]  Remove an existing bookmark
ECHO   warp /create [bookmark]  Navigate to existing bookmark
ECHO   warp /list           List existing bookmarks
ECHO.

:end

Вы можете просматривать, создавать и удалять закладки. Закладки хранятся в текстовых файлах в папке в вашем пользовательском каталоге.

Использование (скопировано из текущей версии):

Закладка папки для использования в терминале.

c:\Temp>warp /create temp     # Create a new bookmark
Created bookmark "temp"
c:\Temp>cd c:\Users\Public    # Go somewhere else
c:\Users\Public>warp temp     # Go to the stored bookmark
c:\Temp>

Каждая деформация использует команду pushd, поэтому вы можете отслеживать свои шаги, используя popd.

c:\Users\Public>warp temp
c:\Temp>popd
c:\Users\Public>

Откройте папку с закладкой в ​​проводнике, используя warp /window <bookmark>.

Перечислите все доступные опции, используя warp /?.

4 голосов
/ 28 августа 2008

Просто с командным файлом, попробуйте это ... (сохранить как имя файла "go.bat")

@echo off
set BookMarkFolder=c:\data\cline\bookmarks\
if exist %BookMarkFolder%%1.lnk start %BookMarkFolder%%1.lnk
if exist %BookMarkFolder%%1.bat start %BookMarkFolder%%1.bat
if exist %BookMarkFolder%%1.vbs start %BookMarkFolder%%1.vbs
if exist %BookMarkFolder%%1.URL start %BookMarkFolder%%1.URL

Любые ярлыки, командные файлы, сценарии VBS или ярлыки Интернета, которые вы помещаете в папку закладок (в этом случае «c: \ data \ cline \ bookmarks \» можно открыть / открыть, набрав «go bookmarkname *» 1005 * "

например. У меня есть закладка под названием "stack.url". Печатание go stack приводит меня прямо к этой странице.

Вы также можете захотеть расследовать Launchy

3 голосов
/ 28 августа 2008

С помощью PowerShell вы можете добавлять папки в качестве переменных в файл profile.ps1, например:

$vids="C:\Users\mabster\Videos"

Затем, как и в Unix, вы можете просто ссылаться на переменные в ваших командах:

cd $vids

Наличие списка назначений переменных в одном файле ps1, вероятно, проще, чем ведение отдельных пакетных файлов.

2 голосов
/ 28 августа 2008

Другим альтернативным подходом, который вы можете рассмотреть, может быть наличие папки, содержащей символические ссылки на каждый из ваших проектов или часто используемых каталогов. Так что вы можете сделать что-то вроде

cd \go\svn-project-1
cd \go\my-douments 

Символические ссылки можно создать на диске NTFS с помощью инструмента Junction

1 голос
/ 29 августа 2008

Кроно написал:

Переменные среды, определенные с помощью «set», не предназначены только для текущего сеанса? Могу ли я сохранить их?

Они установлены для текущего процесса и по умолчанию наследуются любым процессом, который он создает. Они не сохраняются в реестре. Их область действия может быть ограничена в сценариях cmd с помощью "setlocal" (и "endlocal").

1 голос
/ 28 августа 2008

Без Powershell вы можете сделать это так:

C:\>set DOOMED=c:\windows
C:\>cd %DOOMED%
C:\WINDOWS>
0 голосов
/ 28 августа 2008

Переменные среды?

set home=D:\profiles\user\home
set svn-project1=D:\projects\project1\svn\branch\src

cd %home%

В Unix я использую это вместе с popd / pushd / cd - все время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...