파일이 주어지면 별도의(동일한 구조의) 디렉터리에서 위치를 가져오시겠습니까?

파일이 주어지면 별도의(동일한 구조의) 디렉터리에서 위치를 가져오시겠습니까?

Windows 셸 및 cmd 스크립팅에 완전히 익숙하지 않기 때문에 이 특정 문제에 대해 머리를 부딪혔지만 아무것도 나오지 않습니다.

제가 목표로 하는 것은 파일을 마우스 오른쪽 버튼으로 클릭하여 WinMerge를 실행하고 이를 별도의 정적 디렉터리에 있는 해당 파일과 비교하는 상황에 맞는 메뉴 항목을 추가하는 것입니다. 이것이 디렉터리를 확인하기 위한 작업을 수행하는 특정 cmd 파일을 호출하는지 여부는 중요하지 않습니다.

예를 들어, 가상의 디렉터리와 파일 집합이 있습니다.

C:\released\versions\1.0\lib\libcode.cpp
C:\released\versions\1.0\component\componentcode.cpp
C:\dev\lib\libcode.cpp
C:\dev\component\componentcode.cpp

C:\released\versions\1.0\comComponent\comComponentcode.cpp를 마우스 오른쪽 버튼으로 클릭하고 이를 선택하면 WinMerge가 열리고 C:\dev\comComponent\comComponentcode.cpp와 비교됩니다.

우리는 모든 \dev\ 및 \1.0\ 구조가 모든 의도와 목적에 대해 동일하다고 가정할 수 있습니다. 분명히 WinMerge 자체의 시작 명령은 간단하지만 기본 코드 디렉터리 내의 파일에 대한 상대 경로를 결정하는 데 문제가 있습니다.

답변1

어쩌면 이것이 도움이 될 것입니다:

단일 파일에서 자체 추출 zip을 자동으로 생성하는 스크립트가 있습니다. 나는 분명한 이유로 이 스크립트를 상황에 맞는 메뉴에 추가했습니다. 시도해 볼 수 있는 것은 스크립트를 호출하는 상황에 맞는 메뉴에 명령을 추가하는 것입니다. %1스크린샷의 는 파일 이름을 포함하여 마우스 오른쪽 버튼을 클릭한 파일의 전체 경로입니다.

여기에 이미지 설명을 입력하세요

본질적으로 HKCR\*\shell 아래에 새 reg 키를 만들고 상황에 맞는 메뉴에 표시할 이름을 지정합니다. 'Command'라는 라벨이 붙은 아래에 새 키를 만들고 해당 키의 기본값을 호출하려는 명령으로 설정하세요. 귀하의 경우 경로를 매개 변수로 사용하고 해당 경로를 기반으로 새 경로를 구축하고 winMerge를 호출하여 해당 두 경로를 전달하는 간단한 powershell 스크립트를 원할 것입니다. Powershell은 선택하기 어렵지 않습니다.

param([String]$Path=$null)

$CodeDir = "C:\dev\component\"

$File1 = $Path
$File2 = "$CodeDir$(Get-ItemProperty $Path).Name"

Start-Process WinMerge.exe -Argumentlist "$File1 $File2"

분명히 거기에서 일어날 수 있는 몇 가지 최적화가 있지만 바라건대 여러분이 요점을 이해하셨기를 바랍니다. WinMerge가 없어 올바른 구문을 모르지만 수행해야 할 작업의 개요는 다음과 같습니다. 스크립트를 호출하려면 내 스크린샷을 보고 내 스크립트 경로를 사용자 경로로 바꿀 수 있습니다. Vista+에 표준으로 제공되는 powershell이 ​​설치되어 있어야 합니다.

관련 정보