対応するリモートディレクトリをbatファイルで開く

対応するリモートディレクトリをbatファイルで開く

C:\abc\00001\ にある通常のショートカットまたは .bat が必要です。これは C:\xyz\00001\ にリンクする必要があります。ここで、00001 は相対表現として扱われ、この場合は「現在のディレクトリ名」になります。

目的は、フォルダー名が 00001 であっても、12734 であっても、96185 であっても、「姉妹フォルダー」にすばやくアクセスすることです。実際のパスは、フォルダー ツリー内で互いに離れています。

理想的には、bat ファイルではなく通常の Windows ショートカットになるのですが、どのような種類の %CurrDirName% も機能しませんでした。

検索してみたところ、目的に合わせて調整できるコードがいくつか見つかりましたが、このタイプの構文についてはあまり経験がありません。

現在のディレクトリ名を取得します(bat ファイルが配置されている場所。C:\abc\00001\ の場合は 00001 になります)

for %%* in (.) do set CurrDirName=%%~nx*

対応するリモートディレクトリ(C:\xyz\00001)を開きます

%SystemRoot%\explorer.exe "c:\xyz\%CurrDirName%"

何か意見はありますか?:)

編集: @davidmneedham のおかげで、最終的に VBscript を使用するようになりました。最終的なコードは次のとおりです。

Set objShell = CreateObject("Wscript.Shell")
strPath = Wscript.ScriptFullName
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFSOexists = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(strPath)
strFolder = objFSO.GetParentFolderName(objFile)
strExchangeThis = "Y:\Organization\...\" 'shortened path!
strToThis  = "Y:\Labspace\...\" 'shortened path!
strRelFolder = Replace(strFolder, strExchangeThis, strToThis)
' if strRelFolder does not exist yet, we should instead be lead to the basic strToThis folder
exists = objFSOexists.FolderExists(strRelFolder)
if Not (exists) then 
    strRelFolder = strToThis
end if
strPath = "explorer.exe /e," & strRelFolder
objShell.Run strPath
' Encoding changed from UTF-8 to ANSI to allow danish characters in strings.

答え1

CMD バッチファイル方式

次のバッチ ファイルを作成し、C:\abc\00001\ディレクトリ内に配置します。

SET newpath=%cd:\abc\=\xyz\%
start %newpath%

C:\xyz\00001\このバッチファイルを実行すると、新しいウィンドウで開きます。 に配置された同じバッチファイルC:\xyz\00023\が開きますC:\xyz\00023\

%CD%は現在のディレクトリを表す環境変数です。を表す文字列内でに%cd:\abc\=\xyz\%置き換えられます。\abc\\xyz\%cd%SS64 の cmd 変数置換に関するページ詳細については。

VBScript メソッド

以下は、VBScript を使用した同じソリューションです。

Set objShell = CreateObject("Wscript.Shell")
strPath = Wscript.ScriptFullName
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(strPath)
strFolder = objFSO.GetParentFolderName(objFile)
strRelFolder = Replace(strFolder, "\abc\", "\xyz\")
strPath = "explorer.exe /e," & strRelFolder
objShell.Run strPath

関連情報