Domanda

Im alla ricerca di un tool che mi permette di specificare alcune cartelle come "preferiti" e di accedere sulla riga di comando (su Windows XP) tramite una parola chiave.Qualcosa di simile a:

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

Attualmente sto usando un sacco di file batch, ma la modifica di loro dalla mano è un compito scoraggiante.Su Linux c'è cdargs o shell preferiti ma non ho trovato qualcosa su windows.


Grazie per la Powershell suggerimento, ma io non sono ammessi a installarlo sul mio box al lavoro, quindi dovrebbe essere un "classico" cmd.exe soluzione.

È stato utile?

Soluzione

Quello che stai cercando si chiama DOSKEY

È possibile utilizzare il comando doskey per creare macro in l'interprete dei comandi.Per esempio:

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

crea un nuovo comando "mcd", che crea una nuova directory e modifiche alla directory (io preferisco "pushd" "cd", in questo caso, perché mi permette di utilizzare "popd" più tardi per tornare dove ero prima)

Il $* sarà sostituito con il resto della riga di comando dopo il macro, e la $T è usato per delimitare i due diversi comandi che voglio valutare.Se ho digitato:

mcd foo/bar 

alla riga di comando, sarebbe equivalente a:

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

Il passo successivo è quello di creare un file che contiene una serie di macro che è quindi possibile importare utilizzando il /macrofile interruttore.Ho un file (c: ools\doskey.macros), che definisce i comandi che uso regolarmente.Ogni macro deve essere specificato su una linea con la stessa sintassi di cui sopra.

Ma non voglio importare manualmente le macro ogni volta che si avvia un nuovo interprete dei comandi per farlo accadere automaticamente, basta solo aprire la chiave del registro di sistema

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\esecuzione automatica e impostare il valore per essere doskey /macrofile "c: ools\doskey.macro".Facendo questo farà in modo che le macro sono automaticamente predefinita ogni volta che si avvia un nuovo interprete.

Extra pensieri:- Se si vuole fare altre cose in esecuzione automatica (come set di parametri ambientali), è possibile delimitare i comandi con la e commerciale.Il mio appare così:set root=c:\SomeDir&doskey /macrofile "c: ools\doskey.macros" - Se si preferisce che i tuoi settaggi di AutoRun essere impostato per ogni utente, è possibile utilizzare il HKCU nodo invece di HKLM.- È inoltre possibile utilizzare doskey di controllare le cose come la dimensione della storia di comando.- Mi piace alla fine di tutto la mia navigazione macro con \$*, in modo che posso catena cose insieme - Essere attenti per aggiungere le virgolette del caso nella tua macro, se si vuole essere in grado di gestire percorsi con spazi.

Altri suggerimenti

Ero alla ricerca di questa esatta funzionalità, per i casi più semplici.Non riusciva a trovare una soluzione, così ho fatto uno io:

@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

È possibile elencare, creare ed eliminare i segnalibri.I segnalibri sono memorizzati in file di testo in una cartella nella directory dell'utente.

Utilizzo (copiato dalla versione corrente):

Una cartella segnalibro per utilizzare il terminale.

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>

Ogni warp utilizza un comando pushd, in modo che è possibile ripercorrere i passi utilizzando popd.

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

Aprire una cartella di un segnalibro in esplora risorse warp /window <bookmark>.

Elenco di tutte le opzioni disponibili utilizzando warp /?.

Con un file Batch, provare questo...(salva con nome "andare.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

Tutti i collegamenti, file batch, Script VBS o collegamenti Internet metti nella tua cartella dei preferiti (in questo caso "c:\data\cline\bookmarks\" può quindi essere aperto e accessibile digitando "andare bookmarkname"

ad es.Ho un segnalibro chiamato "stack.url".Digitando andare stack mi porta direttamente a questa pagina.

Si potrebbe anche voler indagare Launchy

Con il PowerShell è possibile aggiungere le cartelle come variabili nel tuo profilo.ps1 file, come:

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

Poi, come Unix, si può solo fare riferimento alle variabili nei comandi:

cd $vids

Avere un elenco di assegnazioni di variabili in una ps1 file è probabilmente più facile di mantenere separati i file batch.

Un altro approccio alternativo si potrebbe voler prendere in considerazione potrebbe essere quello di avere una cartella che contiene i collegamenti simbolici per ciascuno dei vostri progetti o usate di frequente directory.Così si può fare qualcosa di simile

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

I collegamenti possono essere effettuati su un disco NTFS utilizzando il Giunzione strumento

Senza Powershell è possibile fare in questo modo:

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

Crono ha scritto:

Sono variabili di Ambiente definite tramite "set", non è pensato solo per la sessione corrente?Posso mantenerli?

Sono fissati per il processo corrente, e per impostazione predefinita ereditato da qualsiasi processo che crea.Essi non sono persistenti al registro di sistema.Il loro campo di applicazione può essere limitata nel cmd script con "setlocal" (e "endlocal").

Le variabili di ambiente?

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

cd %home%

Su Unix io uso questo con popd/pushd/cd - per tutto il tempo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top