단일 항목으로 디렉토리 및 모든 서브 디렉토리를 PATH 변수에 추가하십시오.


19

명령 줄 소프트웨어 (CMD_Software)를 배치 할 홈 폴더에 디렉토리가 있습니다. 혼란을 피하기 위해 각 소프트웨어를 CMD_Software의 자체 디렉토리에 넣었습니다.

명령 줄에서 CMD_Software 및 여기에 포함 된 모든 디렉토리에 액세스 할 수 있도록 PATH 변수에 단일 항목을 만들고 싶습니다.

나는 시도 C:\Users\myuser\CMD_Software\*했지만 아무것도하지 않았다. 그것이 제가 아이디어를 잃어버린 시점입니다.

터미널에있는 동안 새 경로를 설정하지 않고 시스템 속성의 "고급"탭에있는 "환경 변수"에서 새 경로를 설정하려고합니다.


`C : \ Users \ myuser \ CMD_Software *`와 같은 것을 시도 했습니까?
terdon

4
나는 이것이 가능하지 않다고 생각합니다.
Harry Johnston

답변:


16

PATH 변수는 와일드 카드 또는 재귀를 지원하지 않습니다. 이것은 의도적으로 설계된 동작입니다.

때때로 사용했던 두 가지 가능한 해결 방법이 있습니다.

  • 간단한 배치 파일로 디렉토리를 작성하고 해당 디렉토리를 PATH에 추가하십시오. 각 배치 파일은 다음과 같이 원하는 프로그램을 시작할 수 있습니다.

    :: CMD_Software.bat: start CMD_Software
    @C:\Users\myuser\CMD_Software\CMD_Software.exe %*
    

    첫 번째 줄은 주석이고 두 번째 줄은 @명령이 실행되는 것을 막기 위해 시작하며 %*모든 명령 줄 인수를 EXE에 전달하는 데 사용됩니다.

  • CMD.EXE에 별명을 추가하십시오.

    DOSKEY CMD_Software="C:\Users\myuser\CMD_Software\CMD_Software.exe" $*
    

    이것은 본질적으로 CMD_Software명령 프롬프트에서 등호 뒤의 모든 것으로 변환 됩니다. 는 $*제공된 인수로 대체됩니다.

두 번째 방법을 선호합니다. 모든 별칭을 단일 파일로 그룹화하고 (DOSKEY /?의 "/ MACROFILE"스위치 참조) 명령 해석기가 레지스트리 설정을 사용하여 시작할 때마다 자동 실행되도록 할 수 있기 때문입니다 ( "자동 실행"키 참조). CMD /?).

두 번째 방법의 단점은 별칭이 명령 줄의 시작 부분에서만 작동한다는 것입니다. 명령을 연결하려는 경우 문제가 될 수 있습니다. 예를 들어, CLS & CMD_Software괄호를 사용하여 별명을 별도의 줄에 넣지 않으면 작동하지 않습니다.

CLS & (
CMD_Software
)

이것이 문제가 될 때마다 배치 파일 접근 방식으로 넘어갑니다.


감사! 첫 번째 방법은 컴퓨터에서 데이터를 전송할 때 레지스트리를 엉망으로 만들 필요가 없기 때문에 정말 효과적입니다. 유틸리티를 사용할 때 bat 파일을 만드는 데 약간의 시간이 더 걸리기 때문에 매우 깔끔하고 편리합니다.
cyqsimon

불행히도 나는 이전 진술을 빨리 수정해야합니다. 첫 번째 방법을 채택 한 후 스크립트가 무작위로 반쯤 종료되는 이상한 문제가 발생했습니다. 특히, Windows 용 wget은 다운로드가 끝난 후 스크립트를 죽이는 것을 좋아합니다. 지난 두 시간 동안 스크립트 문제를 해결하는 데 어려움을 겪었지만 결국 모든 exe를 단일 루트 디렉토리에 던지려고 시도했지만 문제가 모두 사라졌습니다. 따라서 누군가이 방법을 사용하기 전에주의를 기울여야합니다.
cyqsimon

4

이것이 문제를 해결하는 데 사용하는 것입니다. 아래에서이 스크립트를 복사 FIXPATH.BAT하여 PATH환경 변수에 추가 한 폴더에 다른 이름 으로 저장하십시오 . 예를 들어 :

C : \ 사용자 \ myuser \ CMD_Software \

이제 하위 폴더에있는 프로그램을 실행해야 할 때마다 다음과 같이 말합니다.

C : \ Users \ myuser \ CMD_Software \ unixutils \ grep.exe
또는
C : \ Users \ myuser \ CMD_Software \ imagetools \ exiftool.exe

실행 fixpath(예를 들어, 다음 명령을 입력 한 후 첫 번째 grep또는 exiftool과 같이) :

Microsoft Windows [버전 6.3.9600]
(c) 2013 Microsoft Corporation. 판권 소유.

C : \ Users \ myuser> fixpath
C : \ Users \ myuser> exiftool


FIXPATH.BAT

setlocal EnableDelayedExpansion
cd / D % ~ dp0

(.)에서 / R %% d의 경우
    "dirs =! dirs!; %% d"설정
)

path = % path %! dirs!
(종료
    "ret = % PATH %"설정
)
cmd / K "제목 [#] 경로 수정 [#] && 경로 % ret %"
이탈 / B

@VonC의 답변 덕분에


1

... \ CMD_Software (또는 실제 위치) 아래에 "programlinks \"하위 디렉토리를두고 액세스하려는 각 실행 파일에 대한 심볼릭 링크 또는 하드 링크로 채 웁니다. 그러면 ... \ programlinks에 대한 PATH의 단일 항목으로 충분합니다.


1
그 주요 문제는 실행 파일이 의존하는 라이브러리가 exe와 동일한 디렉토리에있을 경우 사용되지 않는다는 것입니다. 또는 적어도 이것이 나의 시도로 일어나고있는 일입니다.
zero298

@ zero298입니다. 내가 원하지만, 100 % 확신하고 실제로 이것이 사실인지 확인할 수 있다면,이 방법은 다른 방법으로도 가장 깨끗하다.
Henrik

-1

아이디어에 너무 신경 쓰지 않으면 명령 줄 도구를 Windows \ System32 디렉토리에 복사 할 수 있습니다. 그런 다음 ping 또는 ipconfig와 같은 디렉토리에서 실행할 수 있습니다.

편집
주위 땜질 조금 후에이 가능하다. 디렉토리를 구분하려면 세미콜론을 사용해야합니다. "folder1"및 "folder2"에 프로그램이 있다고 가정하십시오. 다음과 같이 경로를 작성하십시오.

c:\folder1\;c:\folder2\;c:\folder3\;    etc....

그런 다음 명령 행에서 직접 어느 디렉토리에서나 프로그램을 호출 할 수 있습니다. AFAIK는 단 한 줄로 다른 방법으로 할 수 없습니다.

지원 정보 : http://en.wikipedia.org/wiki/PATH_ (변수)


1
이것은 말이되지 않습니다. 1. PATH 변수 의 이전 내용이 지워 집니다. 2. PATH 변수는 하위 디렉토리가 아닌 폴더 만 포함합니다 (원하는 결과). 3. PATH가 디자인 된 것과 정반대의 방식 program.bat으로 호출 %PATH%\program.bat합니다.
Dennis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.