Инструмент командной строки "закладки" на окнах?

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

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

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


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

Ответ 1

То, что вы ищете, называется 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". Выполняя это, убедитесь, что ваши макросы автоматически предопределены каждый раз, когда вы запускаете новый интерпретатор.

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

Ответ 2

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

@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>

Каждый warp использует команду pushd, поэтому вы можете отслеживать свои шаги с помощью popd.

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

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

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

Ответ 3

С помощью только пакетного файла попробуйте это... (сохранить как имя файла "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"

например. У меня есть закладка под названием "stack.url". Набрав стоп, я пойду прямо на эту страницу.

Вы также можете изучить Launchy

Ответ 4

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

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

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

cd $vids

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

Ответ 5

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

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

Символы могут быть сделаны на диске NTFS с помощью Junction tool

Ответ 6

Без Powershell вы можете сделать это следующим образом:

C:\>set DOOMED=c:\windows
C:\>cd %DOOMED%
C:\WINDOWS>

Ответ 7

Crono писал (а):

Являются ли переменные среды определенными через "набор", не предназначенными только для текущего сеанса? Могу ли я их сохранить?

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

Ответ 8

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

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

cd %home%

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