windows - vej rekursivt

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøgte at søge dette på Google og lærte ikke rigtig noget, da søgeresultaterne normalt vedrører andre rekursive emner. Hvad jeg gerne vil vide, er, hvis en mappe er i sti, er den defineret rekursivt (på Windows)? Jeg vil gerne oprette en C: \ StandalonePrograms og tilføj den til sti.Den vil indeholde en masse programmeringssprog og andre programmer, der normalt kommer fra zip-filer. Jeg vil gerne vide, at hvis jeg tilføjer programkataloget til det, kan jeg ringe til alle programmerne. Hvis jeg for eksempel har C: \ StandalonePrograms \ SomeProgram, kan jeg åbne en kommandopromptype someCommand og forventer, at den kører fra C: \ StandalonePrograms \ SomeProgram \ bin-mappen? Eller skal jeg definere eksplicit C: \ StandalonePrograms \ SomeProgram \ bin i min vej? Hvis jeg ikke kan, er der nogen løsninger til at nå den situation, jeg vil have?

Bedste reference


Du skal angive hver enkelt mappe enkeltvis, PATH-mekanismen går ikke gennem undermapper.


En løsning kan være en mappe fuld af batchfiler (af en slags), der starter de rigtige værktøjer med fuld sti

Andre referencer 1


Her er en løsning. Gem dette som 'SetMyPath.bat' (eller med et andet navn):


@echo off
set dir=\%*
setlocal EnableDelayedExpansion
for /f "delims=" \%\%i in ('dir /s /ad /o:d /b "\%dir:"=\%"') do set path=\%\%i;!path!
cmd


(Her er "\%dir:"=\%" kun nødvendig for at give dig mulighed for at udelade citatmærker omkring katalogerne med plads i navnene, når du ringer til denne fil. Hvis du ikke har brug for dette, vil \%1 i stedet gøre det.


Denne fil tager et kommandolinjeprincip: mappen. Det vil lancere en ny kopi af cmd.exe, hvor filer under den givne mappe vil være tilgængelige:


C:> mysqldump.exe
File not found.
C:> SetMyPath.bat C:Program FilesMySQL
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:> mysqldump.exe
Usage: mysqldump [OPTIONS] database [tables]
C:> exit


I dette eksempel viser den første kommando, at mysqldump.exe ikke er på banen. Når du har udført batchfilen, startes en ny cmd.exe, hvor mysqldump.exe er tilgængelig. Når du er færdig med at arbejde med det, returnerer exit dig til den oprindelige kopi af cmd.exe.


Hvis der er to kopier af filen .exe under forskellige undermapper, vil kopien i den senest opdaterede mappe blive lanceret (på grund af /o:d). I dette eksempel, under forudsætning af at mappen i den seneste version af MySQL blev opdateret sidst, vil den seneste version af mysqldump.exe blive lanceret.


Batchfilen kan ændres for at sikre, at den seneste kopi af .exe bliver lanceret (spørg mig om en kommentar, hvis du har brug for det).