CMD'deki dizini değiştirmek için shell: komutlarını kullanabilir miyim?


2

Tüm şirket bilgisayarlarına ve not defterlerine sık kullanılanlar yükleyen bir toplu iş dosyası oluşturmaya çalışıyorum.

Kullanarak CMD'deki dizini değiştirmek mümkün müdür shell:favorites?

Buna ihtiyacım var çünkü Dizüstü Bilgisayarlarda sık kullanılanlar yerel olarak depolanıyor C:\%userprofile%\Favorites ve masaüstünde %userprofile% genel olarak da C:\ drive ancak sık kullanılanlar ev sürücüsüne kaydedilir. Gibi harfler kullanmayız H:\ Sürücüyü haritalamak için, sadece bir ağ kısayolu var, bu yüzden bu çalışmayı elde etmek için çok uğraşıyorum.

Farklı ülkelerde farklı sunucularımız var, bu nedenle her ülkeye ait toplu komut dosyasını yerel sunucuya uygun ağ yoluyla ayarlamak istemiyorum.

Yanıtlar:


1

Powershell kullanılarak yapılabilir.

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

Bahşiş için teşekkürler! Yani sadece CMD ile mümkün değil sanırım?
Martin

Bunu cmd'den powershell - komutu ile başlatmak için kullanabilir miyim?
Martin

Cmd'den çalıştırabilirsiniz, ancak geçerli dizin üst öğe cmd'si yerine yalnızca powershell oturumu için değiştirilecektir. Ancak powershell -c "[Environment] :: GetFolderPath (\" Favorites \ ")" komutunu çalıştırabilir ve çıkışını bir şekilde yönlendirebilirsiniz
Andrey

0

Yardımcı komut dosyaları

Komut satırı işlemcisi bazı destekler Ortam Değişkenleri sistem ve kullanıcı yolları için, aksi takdirde bunların oluşturulmasında yardımcı olabilir. Onlar:

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

Yazabilirsin set | more listenin tamamını verilen değerlerle birlikte görmek için. Ancak bir veya daha fazla değişkeni birleştirip gerçek yolu manuel olarak oluşturamazsanız, listelenmemiş yolları almak için yerel bir yol yoktur.

Aşağıda, belirli bir cihazla ilişkili yolu alabilen birkaç karma toplu komut dosyası bulabilirsiniz. kabuk klasörü . Her iki kodu da kaydet ShellHelper.cmd (veya her ne istersen, sadece .cmd uzantı). Komut dosyaları, kabuk klasörü tanımlayıcısı olan tek bir parametreyi kabul eder (ör. Favorites ). Yol daha sonra kaydedilmiş %shellFolder% değişken.

Örnek kullanım

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

Uyarılar

  • Powershell sürümünden farklı olarak, VBScript bir Windows 2000 ve sonraki sürümlerde kutudan çıkar. Özel kullanımınıza gelince, her iki sürüm de olacaktır.

  • PowerShell, Windows 7 ve sonraki sürümlerinde yerleşiktir, ancak önceki işletim sistemlerinde el ile yüklenmesi gerekir.


VBScript sürümü

Ana kredi, burada kullanılan hibrit tekniği ile gelen (ve rafine edilmiş) jeb ve dbenham'a gidiyor.

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))

Desteklenen tanımlayıcılar

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

Not Son satırın değiştirilmesiyle ek kabuk klasörleri desteklenebilir:

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

Bu durumda, belirli bir kabuk klasörü yolu elde etmek için atanmış sayısal değerini geçmeniz gerekir. Örneğin, almak için Favorites kullanmanız gereken değerin yolu 6. Tüm değerleri ve anlamlarını aşağıdaki bağlantılı makalede bulabilirsiniz.

daha fazla okuma


PowerShell sürümü

@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

Desteklenen tanımlar

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 Framework 4.0 ve üzeri

Yukarıdaki tanımlayıcılara ek olarak, bunlar da mevcuttur:

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

Not Mevcut olanların listesini almak için, bir PowerShell konsolunda aşağıdaki komutu çalıştırabilirsiniz:

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

daha fazla okuma

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.