Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Tool for commandline "bookmarks" on windows?

Tags:

command-line

Im searching a tool which allows me to specify some folders as "bookmarks" and than access them on the commandline (on Windows XP) via a keyword. Something like:

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

I'm currently using a bunch of batch files, but editing them by hand is a daunting task. On Linux there is cdargs or shell bookmarks but I haven't found something on windows.


Thanks for the Powershell suggestion, but I'm not allowed to install it on my box at work, so it should be a "classic" cmd.exe solution.

like image 276
crono Avatar asked Aug 28 '08 10:08

crono


2 Answers

What you are looking for is called DOSKEY

You can use the doskey command to create macros in the command interpreter. For example:

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

creates a new command "mcd" that creates a new directory and then changes to that directory (I prefer "pushd" to "cd" in this case because it lets me use "popd" later to go back to where I was before)

The $* will be replaced with the remainder of the command line after the macro, and the $T is used to delimit the two different commands that I want to evaluate. If I typed:

mcd foo/bar 

at the command line, it would be equivalent to:

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

The next step is to create a file that contains a set of macros which you can then import by using the /macrofile switch. I have a file (c:\tools\doskey.macros) which defines the commands that I regularly use. Each macro should be specified on a line with the same syntax as above.

But you don't want to have to manually import your macros every time you launch a new command interpreter, to make it happen automatically, just open up the registry key

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun and set the value to be doskey /macrofile "c:\tools\doskey.macro". Doing this will make sure that your macros are automatically predefined every time you start a new interpreter.

Extra thoughts: - If you want to do other things in AutoRun (like set environment parameters), you can delimit the commands with the ampersand. Mine looks like: set root=c:\SomeDir&doskey /macrofile "c:\tools\doskey.macros" - If you prefer that your AutoRun settings be set per-user, you can use the HKCU node instead of HKLM. - You can also use doskey to control things like the size of the command history. - I like to end all of my navigation macros with \$* so that I can chain things together - Be careful to add quotes as appropriate in your macros if you want to be able to handle paths with spaces in them.

like image 144
Andrew Avatar answered Oct 24 '22 20:10

Andrew


I was looking for this exact functionality, for simple cases. Couldn't find a solution, so I made one myself:

@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

You can list, create and delete bookmarks. The bookmarks are stored in text files in a folder in your user directory.

Usage (copied from current version):

A folder bookmarker for use in the terminal.

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>

Every warp uses a pushd command, so you can trace back your steps using popd.

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

Open a folder of a bookmark in explorer using warp /window <bookmark>.

List all available options using warp /?.

like image 21
DieterDP Avatar answered Oct 24 '22 20:10

DieterDP