Frage

Ich suche ein Tool, mit dem ich einige Ordner als „Lesezeichen“ angeben und dann über ein Schlüsselwort in der Befehlszeile (unter Windows XP) darauf zugreifen kann.Etwas wie:

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

Ich verwende derzeit eine Reihe von Batchdateien, aber die manuelle Bearbeitung ist eine entmutigende Aufgabe.Unter Linux gibt es cdargs oder Muschel-Lesezeichen aber ich habe nichts unter Windows gefunden.


Danke für den Powershell-Vorschlag, aber ich darf es nicht auf meiner Box am Arbeitsplatz installieren, daher sollte es eine „klassische“ cmd.exe-Lösung sein.

War es hilfreich?

Lösung

Was Sie suchen, heißt DOSKEY

Mit dem Befehl doskey können Sie Makros im Befehlsinterpreter erstellen.Zum Beispiel:

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

erstellt einen neuen Befehl „mcd“, der ein neues Verzeichnis erstellt und dann in dieses Verzeichnis wechselt (in diesem Fall bevorzuge ich „pushd“ gegenüber „cd“, weil ich später „popd“ verwenden kann, um dorthin zurückzukehren, wo ich vorher war)

Das $* wird durch den Rest der Befehlszeile nach dem Makro ersetzt und das $T wird verwendet, um die beiden verschiedenen Befehle, die ich auswerten möchte, zu begrenzen.Wenn ich tippe:

mcd foo/bar 

in der Befehlszeile wäre es äquivalent zu:

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

Der nächste Schritt besteht darin, eine Datei zu erstellen, die eine Reihe von Makros enthält, die Sie dann mithilfe des Schalters /macrofile importieren können.Ich habe eine Datei (c: ools\doskey.macros), die die Befehle definiert, die ich regelmäßig verwende.Jedes Makro sollte in einer Zeile mit derselben Syntax wie oben angegeben werden.

Sie möchten Ihre Makros jedoch nicht jedes Mal manuell importieren müssen, wenn Sie einen neuen Befehlsinterpreter starten. Damit dies automatisch geschieht, öffnen Sie einfach den Registrierungsschlüssel

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun und legen Sie den Wert auf doskey /macrofile „c: ools\doskey.macro“ fest.Dadurch wird sichergestellt, dass Ihre Makros jedes Mal automatisch vordefiniert werden, wenn Sie einen neuen Interpreter starten.

Zusätzliche Gedanken:- Wenn Sie in AutoRun andere Dinge tun möchten (z. B. Umgebungsparameter festlegen), können Sie die Befehle durch das kaufmännische Und-Zeichen trennen.Meine sieht aus wie:Setzen Sie Root = C: SOMEDIR & DOSKEY /MACROFILE "C: Tools doskey.macros" - Wenn Sie es vorziehen, dass Ihre Autorun -Einstellungen pro Benutzer eingestellt werden, können Sie den HKCU -Knoten anstelle von HKLM verwenden.- Sie können doskey auch verwenden, um Dinge wie die Größe des Befehlsverlaufs zu steuern.- Ich beende alle meine Navigationsmakros mit $*, damit ich Dinge miteinander ketten kann. Achten Sie darauf, dass Sie in Ihren Makros zitiert, wenn Sie in der Lage sein möchten, Wege mit Räumen in ihnen zu handhaben.

Andere Tipps

Ich habe genau diese Funktionalität für einfache Fälle gesucht.Konnte keine Lösung finden, also habe ich selbst eine gemacht:

@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

Sie können Lesezeichen auflisten, erstellen und löschen.Die Lesezeichen werden in Textdateien in einem Ordner in Ihrem Benutzerverzeichnis gespeichert.

Verwendung (kopiert aus der aktuellen Version):

Ein Ordner-Lesezeichen zur Verwendung im 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>

Jeder Warp verwendet einen Pushd-Befehl, sodass Sie Ihre Schritte mithilfe von Popd zurückverfolgen können.

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

Öffnen Sie einen Ordner mit einem Lesezeichen im Explorer mit warp /window <bookmark>.

Listen Sie alle verfügbaren Optionen mit auf warp /?.

Versuchen Sie Folgendes mit nur einer Batch-Datei ...(speichern als Dateiname „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

Alle Verknüpfungen, Batchdateien, VBS-Skripte oder Internetverknüpfungen, die Sie in Ihren Lesezeichenordner (in diesem Fall „c:\data\cline\bookmarks\“) legen, können dann durch Eingabe von „go Lesezeichenname"

z.B.Ich habe ein Lesezeichen namens „stack.url“.Wenn ich „go stack“ eingebe, gelange ich direkt zu dieser Seite.

Vielleicht möchten Sie auch nachforschen Launchy

Mit PowerShell können Sie die Ordner als Variablen zu Ihrer Datei „profile.ps1“ hinzufügen, etwa:

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

Dann können Sie, wie bei Unix, einfach auf die Variablen in Ihren Befehlen verweisen:

cd $vids

Eine Liste von Variablenzuweisungen in einer ps1-Datei zu haben, ist wahrscheinlich einfacher als die Verwaltung separater Batchdateien.

Ein weiterer alternativer Ansatz, den Sie möglicherweise in Betracht ziehen möchten, könnte darin bestehen, einen Ordner zu erstellen, der symbolische Links zu jedem Ihrer Projekte oder häufig verwendeten Verzeichnisse enthält.Sie können also so etwas tun

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

Mit dem können Symlinks auf einer NTFS-Festplatte erstellt werden Kreuzung Werkzeug

Ohne Powershell geht das so:

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

Crono schrieb:

Sind über „set“ definierte Umgebungsvariablen nicht nur für die aktuelle Sitzung gedacht?Kann ich sie beibehalten?

Sie werden für den aktuellen Prozess festgelegt und standardmäßig von jedem von ihm erstellten Prozess geerbt.Sie werden nicht in der Registrierung gespeichert.Ihr Umfang kann in cmd-Skripten mit „setlocal“ (und „endlocal“) eingeschränkt werden.

Umgebungsvariablen?

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

cd %home%

Unter Unix verwende ich dies ständig zusammen mit popd/pushd/cd.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top