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%cmd 변수 교체에 대한 SS64 페이지상세 사항은.

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

관련 정보