किसी अन्य प्रक्रिया की वर्तमान कार्यशील निर्देशिका प्राप्त करें


3

मेरे पास एक पीआईडी ​​है, और मैं यह निर्धारित करने की कोशिश कर रहा हूं कि प्रक्रिया की वर्तमान कार्यशील निर्देशिका क्या है। मैं wmic processथोड़ी देर के लिए साथ खेला , लेकिन यह cwd उपलब्ध नहीं लगता है। किसी को भी एक चतुर तरीके से पता है कि मैं इसे पूरा कर सकता हूं?



1
दिए गए दोनों जवाबों के लिए एक अलग उपयोगिता (सूची या संभाल) डाउनलोड करने की आवश्यकता लगती है। मैं वास्तव में बिल्ट-इन की उम्मीद कर रहा था ताकि समाधान पोर्टेबल हो।
— kbjr

जवाबों:


1

आप इस बैच स्क्रिप्ट की तरह कुछ कर सकते हैं निष्पादन के लिए व्यवस्थापक अधिकारों के साथ:

@echo off
Mode 75,8 & color 0A
Title Get ExecutablePath of any PID by Hackoo 2018
:::::::::::::::::::::::::::::::::::::::::
:: Automatically check & get admin rights
:::::::::::::::::::::::::::::::::::::::::
REM  --> Check for permissions
Reg query "HKU\S-1-5-19\Environment" >nul 2>&1
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
Echo.
ECHO                 **************************************
ECHO                  Running Admin shell... Please wait...
ECHO                 **************************************

    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
::::::::::::::::::::::::::::
::START
::::::::::::::::::::::::::::
:Loop
Cls
echo( 
set /P "PID=Please provide a PID number to get its ExecutablePath : "
set "ExePath="
SetLocal EnableDelayedExpansion
for /f "skip=1 delims=" %%a in ('"wmic process where "ProcessID^=!PID!" get ExecutablePath 2^>nul"') do (
    If Not "!errorlevel!" equ "1" (
        for /f "delims=" %%b in ("%%a") do if not defined ExePath set "ExePath=%%b"
        Rem To trim a variable ( Removing Spaces into a variable )
        set "ExePath=!ExePath: =!"
    )
)

echo ExecutablePath ==^> "!ExePath!"
for %%a in ("!ExePath!") do set "CWD=%%~dpa"
echo Current Working Directory ==^> "!cwd!"
echo(
echo Hit any key to choose another PID & pause>nul & goto Loop

यह प्रभावशाली बैच स्क्रिप्टिंग है, लेकिन ओपी एक प्रक्रिया की कार्यशील निर्देशिका की तलाश कर रहा था , न कि इसके निष्पादन योग्य मार्ग की।
— mklement0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.