Įvadas: paslėptų komandų kelių atskleidimas sistemoje Windows
Kelio konfliktai gali būti dažna problema kūrėjams, dirbantiems su scenarijais ir komandomis Windows komandų eilutėje. Kai vieną iš jūsų scenarijų užgožia kita programa, nes ji yra kelyje, labai svarbu nustatyti visą nurodytos komandos kelią. Šis scenarijus dažnai verčia vartotojus ieškoti UNIX komandos „which“ atitikmens, o tai supaprastina tikslaus komandos kelio vietą.
UNIX sistemose komanda „which“ naudojama norint parodyti visą nurodytos komandos kelią, padedantį išspręsti tokias šešėlio problemas. Tačiau „Windows“ naudotojams gali kilti klausimas, ar jų platformoje yra panašių paslaugų. Tolesnėje diskusijoje išnagrinėsime „Windows“ galimas parinktis, kad pasiektumėte tas pačias funkcijas ir padėtų efektyviai valdyti su keliu susijusias problemas.
komandą | apibūdinimas |
---|---|
setlocal | Pradedamas aplinkos kintamųjų lokalizavimas paketiniame faile, užtikrindamas, kad pakeitimai nepaveiks pasaulinės aplinkos. |
for %%i in ("%command%") do | Kartojama per nurodytą elementų rinkinį, leidžiantį atlikti operacijas su kiekvienu elementu. |
if exist "%%j\%%~i.exe" | Patikrina, ar nurodytame kelyje yra konkretus failas. |
param | Apibrėžia ir nuskaito parametrus, perduotus PowerShell scenarijui. |
Join-Path | Sujungia dvi ar daugiau eilučių į kelią, tinkamai tvarkydamas skiriamuosius simbolius „PowerShell“. |
Test-Path | Patikrina, ar PowerShell yra nurodytas kelias arba failas. |
os.pathsep | Nuskaito operacinės sistemos naudojamą kelio skyriklį, paprastai kabliataškį (;) sistemoje Windows. |
os.access(exe, os.X_OK) | Patikrina, ar failas yra vykdomas Python. |
„Windows“ komandų eilutės scenarijų supratimas
Pateiktuose scenarijuose kiekvienas jų sukurtas taip, kad imituotų UNIX funkcionalumą komanda, kuri naudojama norint rasti visą komandos kelią. Pirmasis scenarijus naudoja paketinį failą „Windows“ komandų eilutei. Jis prasideda nuo lokalizuoti aplinkos kintamųjų pokyčius. Tada scenarijus nustato komandos pavadinimą į kintamąjį ir patikrina, ar jis tuščias. The for %%i in ("%command%") do ciklas kartojasi per katalogus, išvardytus aplinkos kintamasis. Šioje kilpoje patikrina, ar vykdomasis failas egzistuoja esamame ciklo kataloge. Jei randama, jis išveda kelią ir išeina.
Antrasis scenarijus, parašytas PowerShell, prasideda parametrų apibrėžimu . Scenarijus nuskaito komandos pavadinimą ir padalija aplinkos kintamąjį į atskirus katalogus naudojant . The Join-Path komanda sujungia kiekvieną katalogą su komandos pavadinimu, kad sudarytų galimus vykdomuosius kelius. Tada naudoja patikrinti, ar yra šių kelių. Jei vykdomasis failas randamas, jis išveda kelią ir išeina. Trečiasis scenarijus, parašytas Python, apibrėžia funkciją norėdami ieškoti komandos kataloguose, išvardytuose aplinkos kintamasis. Tai naudoja os.pathsep gauti sistemos kelio skyriklį ir kad patikrintų vykdomumą. Šis scenarijus vykdomas naudojant komandinės eilutės argumentą, nurodantį komandos pavadinimą, ir išspausdinamas visas kelias, jei komanda randama.
Viso komandos kelio nustatymas sistemoje „Windows“.
Naudojant „Windows“ komandų eilutę
@echo off
setlocal
set "command=%1"
if "%command%"=="" (
echo Usage: %~n0 command_name
exit /b 1
)
for %%i in ("%command%") do (
for %%j in (".;%PATH:;=;.;%;") do (
if exist "%%j\%%~i.exe" (
echo %%j\%%~i.exe
exit /b 0
)
)
)
echo %command% not found
endlocal
„PowerShell“ komandų kelių nustatymas
„PowerShell“ scenarijaus naudojimas
param (
[string]$command
)
if (-not $command) {
Write-Output "Usage: .\script.ps1 command_name"
exit 1
}
$path = $env:PATH -split ';'
foreach ($dir in $path) {
$exe = Join-Path $dir $command.exe
if (Test-Path $exe) {
Write-Output $exe
exit 0
}
}
Write-Output "$command not found"
Komandų vietų radimas naudojant Python
Python scenarijaus naudojimas
import os
import sys
def which(command):
path = os.getenv('PATH')
for dir in path.split(os.pathsep):
exe = os.path.join(dir, command)
if os.path.isfile(exe) and os.access(exe, os.X_OK):
return exe
return None
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python script.py command_name")
sys.exit(1)
command = sys.argv[1]
path = which(command)
if path:
print(path)
else:
print(f"{command} not found")
Išplėstiniai kelių valdymo būdai sistemoje „Windows“.
Ne tik surasti visą komandos kelią, bet ir valdyti aplinkos kintamasis yra labai svarbus siekiant išvengti konfliktų ir užtikrinti sklandų scenarijų vykdymą. Sistemoje „Windows“ galima redaguoti sistemos ypatybių sąsają kintama, tačiau tai gali būti sudėtinga dažnai keičiant. Vietoj to, naudojant komanda komandų eilutėje arba „PowerShell“ gali būti efektyvesnis būdas valdyti šiuos kintamuosius. The setx komanda leidžia vartotojams nuolat nustatyti aplinkos kintamuosius, o tai naudinga scenarijuose, kuriems reikalingi konkretūs įrankiai ar programos. .
Kitas naudingas įrankis yra komandą, kuri yra integruota „Windows“ programa, kuri veikia panašiai kaip UNIX komandą. The komanda gali rasti ir parodyti vykdomųjų failų, atitinkančių paieškos kriterijus, kelius. Pavyzdžiui, bėgimas where python Komandinėje eilutėje bus išvardytos visos Python vykdomojo failo vietos, rastos . Tai gali būti ypač naudinga nustatant ir sprendžiant konfliktus, kai įdiegtos kelios įrankio versijos. Derinant naudojimą ir , vartotojai gali geriau valdyti savo aplinką ir užtikrinti, kad būtų vykdomos teisingos komandų versijos.
Dažnai užduodami klausimai apie komandų kelio problemas
- Kas yra komanda Windows?
- The komanda sistemoje Windows suranda ir parodo vykdomųjų failų, atitinkančių paieškos kriterijus, kelius.
- Kaip redaguoti aplinkos kintamasis?
- Galite redaguoti kintamasis per sistemos ypatybių sąsają arba naudojant komandą Command Prompt arba PowerShell.
- Ar galiu naudoti „PowerShell“ komandos keliui rasti?
- Taip, „PowerShell“ galima naudoti norint rasti komandos kelią naudojant scenarijų, kuris kartojasi per katalogus, išvardytus aplinkos kintamasis.
- Koks skirtumas tarp ir komandinėje eilutėje?
- The komanda nustato aplinkos kintamuosius tik dabartinei sesijai, while nustato juos nuolat per seansus.
- Kaip patikrinti, ar failas yra vykdomas Python?
- Galite patikrinti, ar failas yra vykdomas Python, naudodami .
- Ką daro daryti Python?
- The atributas pateikia operacinės sistemos naudojamą kelio skyriklį, kuris yra kabliataškis (;) sistemoje Windows.
Norint išvengti konfliktų ir užtikrinti teisingą scenarijaus vykdymą, labai svarbu efektyviai valdyti ir rasti komandų kelius Windows komandų eilutėje. Naudodami paketinius failus, PowerShell scenarijus ir Python, vartotojai gali pakartoti UNIX komandos „which“ funkcijas. Be to, naudojant tokius įrankius kaip komanda where ir PATH kintamojo valdymas gali dar labiau supaprastinti šį procesą. Šie metodai suteikia tvirtus sprendimus, padedančius palaikyti švarią ir efektyvią kūrimo aplinką, padeda vartotojams greitai nustatyti ir išspręsti su keliu susijusias problemas.