Инструмент для создания “закладок” командной строки в Windows?

StackOverflow https://stackoverflow.com/questions/32003

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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


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

Это было полезно?

Решение

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

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

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

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

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

mcd foo/bar 

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

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

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

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

HKEY_LOCAL_MACHINE\Программное обеспечение\Microsoft\Командный процессор\автозапуск и задайте значение doskey /macrofile "c: ools\doskey.macro".Выполнение этого позволит убедиться, что ваши макросы автоматически предопределяются каждый раз, когда вы запускаете новый интерпретатор.

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

Другие советы

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

@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 /?.

Используя только пакетный файл, попробуйте это...(сохранить как имя файла "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 \"), затем можно открыть / получить доступ, набрав "перейти название закладки"

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

Возможно, вы также захотите провести расследование Начинающий

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

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

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

cd $vids

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

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

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

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

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

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

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

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

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

Переменные окружения?

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

cd %home%

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top