அறிமுகம்: விண்டோஸில் மறைக்கப்பட்ட கட்டளை பாதைகளைக் கண்டறிதல்
விண்டோஸ் கட்டளை வரியில் ஸ்கிரிப்டுகள் மற்றும் கட்டளைகளுடன் பணிபுரியும் டெவலப்பர்களுக்கு பாதை முரண்பாடுகள் அடிக்கடி பிரச்சினையாக இருக்கலாம். உங்கள் ஸ்கிரிப்ட்களில் ஒன்று, பாதையில் அதன் இடம் காரணமாக மற்றொரு நிரலால் மறைக்கப்பட்டால், கொடுக்கப்பட்ட கட்டளையின் முழு பாதையை அடையாளம் காண்பது மிகவும் முக்கியமானது. இந்தக் காட்சியானது, பயனர்கள் UNIX 'which' கட்டளைக்கு சமமான கட்டளையைத் தேடுவதற்கு வழிவகுக்கிறது, இது ஒரு கட்டளையின் சரியான பாதையைக் கண்டறிவதை எளிதாக்குகிறது.
UNIX கணினிகளில், 'which' கட்டளையானது ஒரு குறிப்பிட்ட கட்டளையின் முழுப் பாதையையும் காண்பிக்கப் பயன்படுகிறது, இது போன்ற நிழல் சிக்கல்களைத் தீர்க்க உதவுகிறது. இருப்பினும், விண்டோஸ் பயனர்கள் தங்கள் இயங்குதளத்தில் இதே போன்ற பயன்பாடு உள்ளதா என்று ஆச்சரியப்படலாம். பின்வரும் கலந்துரையாடலில், அதே செயல்பாட்டை அடைய Windows இல் கிடைக்கும் விருப்பங்களை நாங்கள் ஆராய்வோம் மற்றும் பாதை தொடர்பான சிக்கல்களை திறம்பட நிர்வகிக்க உங்களுக்கு உதவுவோம்.
கட்டளை | விளக்கம் |
---|---|
setlocal | ஒரு தொகுதி கோப்பில் சூழல் மாறிகளின் உள்ளூர்மயமாக்கலைத் தொடங்குகிறது, மாற்றங்கள் உலகளாவிய சூழலைப் பாதிக்காது. |
for %%i in ("%command%") do | ஒவ்வொரு உருப்படியிலும் செயல்பாடுகளைச் செய்ய அனுமதிக்கும் குறிப்பிட்ட உருப்படிகளின் மூலம் மீண்டும் மீண்டும் செய்கிறது. |
if exist "%%j\%%~i.exe" | கொடுக்கப்பட்ட பாதையில் ஒரு குறிப்பிட்ட கோப்பு இருக்கிறதா என்று சரிபார்க்கிறது. |
param | பவர்ஷெல் ஸ்கிரிப்ட்டுக்கு அனுப்பப்பட்ட அளவுருக்களை வரையறுத்து மீட்டெடுக்கிறது. |
Join-Path | இரண்டு அல்லது அதற்கு மேற்பட்ட சரங்களை ஒரு பாதையில் இணைக்கிறது, பவர்ஷெல்லில் பிரிப்பான் எழுத்துகளை சரியான முறையில் கையாளுகிறது. |
Test-Path | PowerShell இல் ஒரு குறிப்பிட்ட பாதை அல்லது கோப்பு இருப்பதைச் சரிபார்க்கிறது. |
os.pathsep | இயக்க முறைமையால் பயன்படுத்தப்படும் பாதை பிரிப்பானை மீட்டெடுக்கிறது, பொதுவாக விண்டோஸில் அரைப்புள்ளி (;). |
os.access(exe, os.X_OK) | பைத்தானில் ஒரு கோப்பு இயங்கக்கூடியதா என்பதைச் சரிபார்க்கிறது. |
விண்டோஸ் கட்டளை வரி ஸ்கிரிப்ட்களைப் புரிந்துகொள்வது
வழங்கப்பட்ட ஸ்கிரிப்ட்களில், ஒவ்வொன்றும் UNIX இன் செயல்பாட்டைப் பிரதிபலிக்கும் வகையில் வடிவமைக்கப்பட்டுள்ளது which கட்டளை, இது ஒரு கட்டளையின் முழு பாதையை கண்டறிய பயன்படுகிறது. முதல் ஸ்கிரிப்ட் விண்டோஸ் கட்டளை வரியில் ஒரு தொகுதி கோப்பைப் பயன்படுத்துகிறது. இது தொடங்குகிறது setlocal சுற்றுச்சூழல் மாறி மாற்றங்களை உள்ளூர்மயமாக்க. ஸ்கிரிப்ட் பின்னர் கட்டளை பெயரை மாறிக்கு அமைக்கிறது %command% மற்றும் அது காலியாக உள்ளதா என சரிபார்க்கிறது. தி for %%i in ("%command%") do இல் பட்டியலிடப்பட்டுள்ள கோப்பகங்கள் மூலம் லூப் மீண்டும் செயல்படுகிறது PATH சுற்றுச்சூழல் மாறி. இந்த வளையத்திற்குள், தி if exist "%%j\%%~i.exe" லூப்பின் தற்போதைய கோப்பகத்தில் இயங்கக்கூடிய கோப்பு இருக்கிறதா என்று சரிபார்க்கிறது. கண்டுபிடிக்கப்பட்டால், அது பாதையை வெளியிட்டு வெளியேறும்.
பவர்ஷெல்லில் எழுதப்பட்ட இரண்டாவது ஸ்கிரிப்ட், அளவுருக்களை வரையறுப்பதன் மூலம் தொடங்குகிறது param. ஸ்கிரிப்ட் கட்டளையின் பெயரை மீட்டெடுக்கிறது மற்றும் பிரிக்கிறது PATH பயன்படுத்தி தனிப்பட்ட அடைவுகளில் சூழல் மாறி $env:PATH -split ';'. தி Join-Path கட்டளை ஒவ்வொரு கோப்பகத்தையும் கட்டளை பெயருடன் இணைத்து சாத்தியமான இயங்கக்கூடிய பாதைகளை உருவாக்குகிறது. பின்னர் அது பயன்படுத்துகிறது Test-Path இந்த பாதைகளின் இருப்பை சரிபார்க்க. இயங்கக்கூடியது கண்டுபிடிக்கப்பட்டால், அது பாதையை வெளியிட்டு வெளியேறுகிறது. பைத்தானில் எழுதப்பட்ட மூன்றாவது ஸ்கிரிப்ட் ஒரு செயல்பாட்டை வரையறுக்கிறது which இல் பட்டியலிடப்பட்டுள்ள கோப்பகங்களில் கட்டளையைத் தேட PATH சுற்றுச்சூழல் மாறி. இது பயன்படுத்துகிறது os.pathsep கணினியின் பாதை பிரிப்பான் மற்றும் os.access செயல்படுத்தக்கூடிய தன்மையை சரிபார்க்க. இந்த ஸ்கிரிப்ட் கட்டளையின் பெயரைக் குறிப்பிடும் கட்டளை வரி வாதத்துடன் இயக்கப்படுகிறது, மேலும் கட்டளை கண்டுபிடிக்கப்பட்டால் அது முழு பாதையையும் அச்சிடுகிறது.
விண்டோஸில் ஒரு கட்டளையின் முழு பாதையை தீர்மானித்தல்
Windows Command Prompt ஐப் பயன்படுத்துதல்
@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
பவர்ஷெல்லில் கட்டளை பாதைகளைக் கண்டறிதல்
பவர்ஷெல் ஸ்கிரிப்டைப் பயன்படுத்துதல்
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"
பைதான் மூலம் கட்டளை இடங்களைக் கண்டறிதல்
பைதான் ஸ்கிரிப்டைப் பயன்படுத்துதல்
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")
விண்டோஸில் மேம்பட்ட பாதை மேலாண்மை நுட்பங்கள்
ஒரு கட்டளையின் முழு பாதையை வெறுமனே கண்டுபிடிப்பதற்கு அப்பால், நிர்வகிக்கிறது PATH பிணக்குகளைத் தவிர்ப்பதற்கும், ஸ்கிரிப்ட்களை சீராகச் செயல்படுத்துவதை உறுதி செய்வதற்கும் சூழல் மாறி முக்கியமானது. விண்டோஸில், ஒருவர் சிஸ்டம் ப்ராப்பர்டீஸ் இடைமுகத்தை எடிட் செய்ய பயன்படுத்தலாம் PATH மாறி, ஆனால் அடிக்கடி ஏற்படும் மாற்றங்களுக்கு இது சிரமமாக இருக்கும். மாறாக, பயன்படுத்தி setx Command Prompt அல்லது PowerShell இல் உள்ள கட்டளை இந்த மாறிகளை நிர்வகிக்க மிகவும் திறமையான வழியை வழங்குகிறது. தி setx கட்டளை பயனர்களை சூழல் மாறிகளை தொடர்ந்து அமைக்க அனுமதிக்கிறது, இது குறிப்பிட்ட கருவிகள் அல்லது பயன்பாடுகளுக்கு முன்னுரிமை அளிக்க வேண்டிய ஸ்கிரிப்டுகளுக்கு பயனுள்ளதாக இருக்கும். PATH.
மற்றொரு பயனுள்ள கருவி where கட்டளை, இது UNIX ஐப் போலவே செயல்படும் உள்ளமைக்கப்பட்ட விண்டோஸ் பயன்பாடாகும் which கட்டளை. தி where கட்டளையானது தேடல் அளவுகோல்களுடன் பொருந்தக்கூடிய இயங்கக்கூடிய கோப்புகளின் பாதைகளைக் கண்டறிந்து காண்பிக்க முடியும். உதாரணமாக, ஓடுதல் where python கட்டளை வரியில் பைதான் இயங்கக்கூடிய அனைத்து இடங்களையும் பட்டியலிடும் PATH. ஒரு கருவியின் பல பதிப்புகள் நிறுவப்பட்டிருக்கும் போது முரண்பாடுகளைக் கண்டறிந்து தீர்க்க இது குறிப்பாக உதவியாக இருக்கும். பயன்பாட்டை இணைப்பதன் மூலம் setx மற்றும் where, பயனர்கள் தங்கள் சூழலை சிறப்பாக நிர்வகிக்க முடியும் மற்றும் கட்டளைகளின் சரியான பதிப்புகள் செயல்படுத்தப்படுவதை உறுதிசெய்ய முடியும்.
கட்டளை பாதை சிக்கல்கள் பற்றி அடிக்கடி கேட்கப்படும் கேள்விகள்
- என்ன where விண்டோஸில் கட்டளையா?
- தி where விண்டோஸில் உள்ள கட்டளை தேடல் அளவுகோல்களுடன் பொருந்தக்கூடிய இயங்கக்கூடிய கோப்புகளின் பாதைகளைக் கண்டறிந்து காட்டுகிறது.
- நான் எப்படி திருத்துவது PATH சுற்றுச்சூழல் மாறி?
- நீங்கள் திருத்தலாம் PATH கணினி பண்புகள் இடைமுகம் மூலம் மாறி அல்லது பயன்படுத்தி setx Command Prompt அல்லது PowerShell இல் கட்டளை.
- நான் ஒரு கட்டளையின் பாதையைக் கண்டறிய PowerShell ஐப் பயன்படுத்தலாமா?
- ஆம், பட்டியலிடப்பட்ட கோப்பகங்கள் மூலம் மீண்டும் செயல்படும் ஸ்கிரிப்டைப் பயன்படுத்தி, கட்டளையின் பாதையைக் கண்டறிய PowerShell ஐப் பயன்படுத்தலாம். PATH சுற்றுச்சூழல் மாறி.
- என்ன வித்தியாசம் setx மற்றும் set கட்டளை வரியில்?
- தி set கட்டளை தற்போதைய அமர்வுக்கு மட்டும் சூழல் மாறிகளை அமைக்கிறது setx அமர்வுகள் முழுவதும் அவற்றை தொடர்ந்து அமைக்கிறது.
- பைத்தானில் ஒரு கோப்பு இயங்கக்கூடியதா என்பதை நான் எவ்வாறு சரிபார்க்கலாம்?
- பைத்தானில் கோப்பு இயங்கக்கூடியதா என்பதை நீங்கள் சரிபார்க்கலாம் os.access(file, os.X_OK).
- என்ன செய்கிறது os.pathsep பைத்தானில் செய்யவா?
- தி os.pathsep பண்புக்கூறு இயங்குதளம் பயன்படுத்தும் பாதை பிரிப்பானை வழங்குகிறது, இது விண்டோஸில் அரைப்புள்ளி (;) ஆகும்.
இறுதி எண்ணங்கள்:
விண்டோஸ் கட்டளை வரியில் கட்டளை பாதைகளை திறம்பட நிர்வகித்தல் மற்றும் கண்டறிதல் ஆகியவை முரண்பாடுகளைத் தவிர்ப்பதற்கும் சரியான ஸ்கிரிப்ட் செயல்படுத்தலை உறுதி செய்வதற்கும் முக்கியமானதாகும். தொகுதி கோப்புகள், பவர்ஷெல் ஸ்கிரிப்டுகள் மற்றும் பைதான் ஆகியவற்றைப் பயன்படுத்துவதன் மூலம், பயனர்கள் UNIX 'which' கட்டளையின் செயல்பாட்டைப் பிரதிபலிக்க முடியும். கூடுதலாக, எங்கே கட்டளை போன்ற கருவிகளை மேம்படுத்துதல் மற்றும் PATH மாறியை நிர்வகித்தல் இந்த செயல்முறையை மேலும் சீராக்கலாம். இந்த நுட்பங்கள் ஒரு சுத்தமான மற்றும் திறமையான மேம்பாட்டு சூழலை பராமரிக்க வலுவான தீர்வுகளை வழங்குகின்றன, பயனர்கள் பாதை தொடர்பான சிக்கல்களை விரைவாகக் கண்டறிந்து தீர்க்க உதவுகின்றன.