क्या मैं सीएमडी में निर्देशिका बदलने के लिए शेल: कमांड का उपयोग कर सकता हूं?


2

मैं एक बैच फ़ाइल बनाने की कोशिश कर रहा हूं जो सभी कंपनी पीसी और नोटबुक पर पसंदीदा स्थापित करता है।

क्या सीएमडी का उपयोग करके निर्देशिका को बदलना संभव है shell:favorites?

मुझे इसकी आवश्यकता है क्योंकि नोटबुक पर पसंदीदा को स्थानीय रूप से C:\%userprofile%\Favoritesऔर डेस्कटॉप पर %userprofile%सामान्य रूप से संग्रहीत किया जाता है , C:\ driveलेकिन होम ड्राइव पर पसंदीदा भी सहेजे जाते हैं। हम H:\ड्राइव को मैप करने के लिए अक्षरों का उपयोग नहीं करते हैं , बस एक नेटवर्क शॉर्टकट है, यही कारण है कि मैं इस काम को पाने के लिए बहुत कोशिश कर रहा हूं।

अलग-अलग देशों में हमारे अलग-अलग सर्वर हैं, इसलिए मैं स्थानीय सर्वर के अनुसार नेटवर्क पथ के साथ हर देश के लिए अपनी बैच स्क्रिप्ट को समायोजित नहीं करना चाहता।

जवाबों:


1

इसे पॉवरशेल का उपयोग करके किया जा सकता है

cd ([Environment]::GetFolderPath("Favorites"))

पारितोषिक के लिए धन्यवाद! इसलिए मुझे लगता है कि यह केवल सीएमडी के साथ संभव नहीं है?
मार्टिन

क्या मैं इसे cmd से पॉवरशेल - कमांड के साथ लॉन्च करने के लिए उपयोग कर सकता हूं?
मार्टिन

आप इसे cmd से चला सकते हैं, लेकिन वर्तमान डायरेक्टरी को केवल पॉवरशेल सत्र के लिए बदला जाएगा, पैरेंट cmd के लिए नहीं। लेकिन आप पावरशेल -c "[पर्यावरण] :: GetFolderPath (\" पसंदीदा \ ") चला सकते हैं और इसके आउटपुट को किसी तरह से पाइप कर सकते हैं
एंड्री

0

सहायक स्क्रिप्ट

कमांड लाइन प्रोसेसर सिस्टम और उपयोगकर्ता पथ के लिए कुछ पर्यावरण चर का समर्थन करता है, या जो अन्यथा उन्हें बनाने में मदद कर सकता है। वो हैं:

ALLUSERSPROFILE
APPDATA
CommonProgramFiles
CommonProgramFiles(x86)
CommonProgramW6432
COMPUTERNAME
HOMEDRIVE
HOMEPATH
LOCALAPPDATA
LOGONSERVER
ProgramData
ProgramFiles
ProgramFiles(x86)
ProgramW6432
PUBLIC
SystemDrive
SystemRoot
TEMP
TMP
USERDOMAIN
USERDOMAIN_ROAMINGPROFILE
USERNAME
USERPROFILE
windir

आप set | moreनिर्दिष्ट मूल्यों के साथ पूरी सूची देखने के लिए टाइप कर सकते हैं। हालांकि कोई विशेष रास्ता नहीं है, जो सूचीबद्ध नहीं हैं, जब तक कि आप एक या अधिक चर को जोड़कर वास्तविक पथ को मैन्युअल रूप से नहीं बना सकते हैं।

नीचे आप हाइब्रिड बैच स्क्रिप्ट के एक जोड़े को पा सकते हैं जो एक विशिष्ट शेल फ़ोल्डर से जुड़े पथ को पुनः प्राप्त कर सकता है । या तो कोड को सहेजें ShellHelper.cmd(या जो भी आपको पसंद है, बस .cmdविस्तार रखें )। स्क्रिप्ट एकल पैरामीटर को स्वीकार करती है, जो शेल फ़ोल्डर आइडेंटिफायर (उदा Favorites) है। पथ को फिर %shellFolder%चर में संग्रहीत किया जाएगा ।

उदाहरण उपयोग

ShellHelper.cmd Favorites >nul
if defined shellFolder pushd "%shellFolder%"

टिप्पणियों

  • पॉवर्सशेल संस्करण के विपरीत, वीबीएसस्क्रिप्ट एक विंडोज 2000 और बाद में बॉक्स से बाहर काम करता है। अपने विशिष्ट उपयोग के लिए, या तो संस्करण करेंगे।

  • PowerShell विंडोज 7 और बाद में अंतर्निहित है, लेकिन इसे पहले के ऑपरेटिंग सिस्टम में मैन्युअल रूप से इंस्टॉल करना होगा।


VBScript संस्करण

मुख्य श्रेय जेब और debham को जाता है जो यहां इस्तेमाल की जाने वाली हाइब्रिड तकनीक के साथ आते हैं (और परिष्कृत)।

REM^ &@echo off
REM^ &set shellFolder=
REM^ &if "%~1" == "" exit /b 2
REM^ &for /f "delims=" %%G in ('"cscript /nologo /e:vbscript "%~f0" %~1 "') do set shellFolder=%%~G
REM^ &exit /b

WScript.Echo WScript.CreateObject("WScript.Shell").SpecialFolders.Item(WScript.Arguments(0))

समर्थित पहचानकर्ता

AllUsersDesktop
AllUsersStartMenu
AllUsersPrograms
AllUsersStartup
Desktop
Favorites
Fonts
MyDocuments
NetHood
PrintHood
Recent
SendTo
StartMenu
Startup
Templates

नोट अतिरिक्त शेल फ़ोल्डर को अंतिम पंक्ति के साथ बदलकर समर्थित किया जा सकता है:

WScript.Echo WScript.CreateObject("Shell.Application").Namespace(CLng(WScript.Arguments(0))).Self.Path

इस मामले में, एक विशेष शेल फ़ोल्डर पथ प्राप्त करने के लिए आपको इसके निर्दिष्ट संख्यात्मक मान को पास करना होगा। उदाहरण के लिए, उस Favoritesपथ को प्राप्त करने के लिए जिसे आपको उपयोग करना है 6। आप नीचे दिए गए लिंक में सभी मान और उनके अर्थ पा सकते हैं।

आगे की पढाई


PowerShell संस्करण

@echo off
set shellFolder=
if "%~1" == "" exit /b 2
set _params=-NoLogo -NoProfile -Noninteractive -ExecutionPolicy Bypass
set _command="([Environment]::GetFolderPath('%~1'))"
for /f "usebackq delims=" %%G in (`powershell %_params% -Command %_command%`) do set shellFolder=%%~G
set _params=
set _command=
exit /b

समर्थित पहचान देता है

ApplicationData
CommonApplicationData
CommonProgramFiles
Cookies
Desktop
DesktopDirectory
Favorites
History
InternetCache
LocalApplicationData
MyComputer
MyDocuments
MyMusic
MyPictures
Personal
ProgramFiles
Programs
Recent
SendTo
StartMenu
Startup
System
Templates

PowerShell 3.0 / .NET फ्रेमवर्क 4.0 और बाद में

उपरोक्त पहचानकर्ताओं के अलावा, ये भी उपलब्ध हैं:

AdminTools
CDBurning
CommonAdminTools
CommonDesktopDirectory
CommonDocuments
CommonMusic
CommonOemLinks
CommonPictures
CommonProgramFilesX86
CommonPrograms
CommonStartMenu
CommonStartup
CommonTemplates
CommonVideos
Fonts
LocalizedResources
MyVideos
NetworkShortcuts
PrinterShortcuts
ProgramFilesX86
Resources
SystemX86
UserProfile
Windows

नोट उपलब्ध लोगों की सूची प्राप्त करने के लिए, आप निम्नलिखित आदेश को PowerShell कंसोल में चला सकते हैं:

[Enum]::GetNames('System.Environment+SpecialFolder') | Sort-Object

आगे की पढाई

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.