12

いくつかのフォルダーを「ブックマーク」として指定し、キーワードを介してコマンドライン (Windows XP の場合) でそれらにアクセスできるツールを探しています。何かのようなもの:

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

現在、大量のバッチ ファイルを使用していますが、手動で編集するのは大変な作業です。Linux にはcdargsまたはシェル ブックマークがありますが、Windows では何も見つかりませんでした。


Powershellの提案に感謝しますが、職場のボックスにインストールすることは許可されていないため、「クラシック」なcmd.exeソリューションである必要があります。

4

8 に答える 8

24

あなたが探しているのは DOSKEY と呼ばれるものです

doskey コマンドを使用して、コマンド インタープリターでマクロを作成できます。例えば:

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

新しいディレクトリを作成し、そのディレクトリに変更する新しいコマンド「mcd」を作成します(この場合、「popd」を使用して以前の場所に戻ることができるため、「cd」よりも「pushd」を好みます)

$* は、マクロの後のコマンド ラインの残りの部分に置き換えられます。$T は、評価する 2 つの異なるコマンドを区切るために使用されます。私が入力した場合:

mcd foo/bar 

コマンド ラインでは、次のようになります。

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

次の手順では、/macrofile スイッチを使用してインポートできる一連のマクロを含むファイルを作成します。定期的に使用するコマンドを定義するファイル (c:\tools\doskey.macros) があります。各マクロは、上記と同じ構文で 1 行に指定する必要があります。

ただし、新しいコマンド インタープリターを起動するたびにマクロを手動でインポートする必要はありません。自動的に実行するには、レジストリ キーを開くだけです。

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" - AutoRun 設定をユーザーごとに設定したい場合は、HKLM の代わりに HKCU ノードを使用できます。- doskey を使用して、コマンド履歴のサイズなどを制御することもできます。- すべてのナビゲーション マクロを \$* で終了して、物事を連鎖できるようにするのが好きです - スペースを含むパスを処理できるようにする場合は、マクロに適切な引用符を追加するように注意してください。

于 2008-08-28T11:23:38.290 に答える
5

単純なケースで、この正確な機能を探していました。解決策が見つからなかったので、自分で作成しました:

@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 /?

于 2016-04-13T21:00:16.830 に答える
4

バッチファイルだけで、これを試してください...(ファイル名「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 と入力すると、このページに直接移動します。

Launchyを調査することもできます

于 2008-08-28T11:34:45.687 に答える
3

PowerShell を使用すると、次のように、profile.ps1 ファイルにフォルダーを変数として追加できます。

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

次に、Unix のように、コマンドで変数を参照するだけです。

cd $vids

1 つの ps1 ファイルに変数割り当てのリストを含める方が、個別のバッチ ファイルを維持するよりもおそらく簡単です。

于 2008-08-28T10:53:53.867 に答える
2

検討したい別の代替アプローチは、各プロジェクトまたは頻繁に使用されるディレクトリへのシンボリックリンクを含むフォルダーを作成することです。だからあなたは次のようなことができます

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

Junctionツールを使用して、NTFS ディスク上にシンボリック リンクを作成できます。

于 2008-08-28T11:38:29.923 に答える
1

Powershell がなければ、次のように実行できます。

C:\>set DOOMED=c:\windows
C:\>cd %DOOMED%
C:\WINDOWS>
于 2008-08-28T10:57:01.753 に答える
1

クロノ さんが書きました:

「set」を介して定義された環境変数は、現在のセッションのみを対象としたものではありませんか? それらを永続化できますか?

それらは現在のプロセス用に設定され、デフォルトでは、それが作成するすべてのプロセスに継承されます。それらはレジストリに永続化されません。それらのスコープは、「setlocal」(および「endlocal」)を使用して cmd スクリプトで制限できます。

于 2008-08-28T23:56:51.723 に答える
0

環境変数?

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

cd %home%

Unix では、常にこれを popd/pushd/cd と一緒に使用しています。

于 2008-08-28T10:58:30.363 に答える