Инструмент командной строки "закладки" на окнах?
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.