Я ищу инструмент, который позволяет мне указать некоторые папки как «закладки», а затем получить к ним доступ из командной строки (в Windows XP) через ключевое слово. Что-то вроде:
C:\> go home
D:\profiles\user\home\> go svn-project1
D:\projects\project1\svn\branch\src\>
В настоящее время я использую несколько пакетных файлов, но редактировать их вручную - непростая задача. В Linux есть cdargs или закладки оболочки, но я ничего не нашел в Windows.
Спасибо за предложение Powershell, но мне не разрешено устанавливать его на моем компьютере на работе, поэтому это должно быть «классическое» решение cmd.exe.





С помощью PowerShell вы можете добавить папки как переменные в файл profile.ps1, например:
$vids = "C:\Users\mabster\Videos"
Затем, как и в Unix, вы можете просто ссылаться на переменные в своих командах:
cd $vids
Наличие списка назначений переменных в одном файле ps1, вероятно, проще, чем ведение отдельных командных файлов.
Без Powershell это можно сделать так:
C:\>set DOOMED=c:\windows
C:\>cd %DOOMED%
C:\WINDOWS>
Переменные среды?
set home=D:\profiles\user\home
set svn-project1=D:\projects\project1\svn\branch\src
cd %home%
В Unix я использую это вместе с popd / pushd / cd - все время.
То, что вы ищете, называется 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 (например, устанавливать параметры среды), вы можете ограничить команды амперсандом. Мой выглядит так: set root = c: \ SomeDir & doskey / macrofile "c: \ tools \ doskey.macros" - Если вы предпочитаете, чтобы настройки автозапуска были установлены для каждого пользователя, вы можете использовать узел HKCU вместо HKLM. - Вы также можете использовать doskey для управления такими вещами, как размер истории команд. - Мне нравится заканчивать все свои навигационные макросы символом \ $ *, чтобы можно было связать все вместе - Будьте осторожны при добавлении кавычек в свои макросы, если вы хотите иметь возможность обрабатывать пути с пробелами в них.
Спасибо, это именно то, что я искал !! Я заметил, что в значение AutoRun вы также можете вставить полный путь к командному файлу, что может быть более гибким.
Просто попробуйте это с помощью пакетного файла ... (сохранить как имя файла "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 имя закладки"
например У меня есть закладка под названием "stack.url". Набрав команду go stack, я попадаю прямо на эту страницу.
Вы также можете исследовать Запуск
Другой альтернативный подход, который вы, возможно, захотите рассмотреть, может заключаться в создании папки, содержащей символические ссылки на каждый из ваших проектов или часто используемых каталогов. Итак, вы можете сделать что-то вроде
cd \go\svn-project-1 cd \go\my-douments
Символические ссылки могут быть созданы на NTFS-диске с помощью инструмента Соединение.
Crono wrote:
Are Environment variables defined via "set" not meant for the current session only? Can I persist them?
Они устанавливаются для текущего процесса и по умолчанию наследуются любым процессом, который он создает. Они не сохраняются в реестре. Их объем может быть ограничен в сценариях cmd с помощью "setlocal" (и "endlocal").
Я искал именно эту функциональность для простых случаев. Не удалось найти решение, поэтому я сделал его сам:
@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 /?.
Отличное решение, я не знаю, почему у него нет голосов - оно намного элегантнее и проще в использовании, чем что-либо еще опубликованное.
К вашему сведению, в Windows 7 (я только что) команда doskey в настоящее время называется «doskey /macrofile="c:\tools\doskey.macros». Пришлось это посмотреть. Также, если в вашем реестре нет автозапуска (у меня нет), обратите внимание, что это строковое значение в Command Processor, а не его собственный ключ. \ Скинул меня (или тоже изменилось). В противном случае большое спасибо!