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


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.