Hilfsskripte

Hilfsskripte

Ich versuche eine Batchdatei zu erstellen, die Favoriten auf allen Firmen-PCs und Notebooks installiert.

Ist es möglich, das Verzeichnis in CMD mit zu ändern shell:favorites?

Ich brauche das, weil auf den Notebooks die Favoriten lokal gespeichert sind C:\%userprofile%\Favoritesund auf dem Desktop %userprofile%ist das im Allgemeinen auch so, C:\ driveaber die Favoriten werden auf dem Home-Laufwerk gespeichert. Wir verwenden keine Buchstaben, um H:\das Laufwerk zuzuordnen, sondern nur eine Netzwerkverknüpfung, deshalb versuche ich so sehr, das zum Laufen zu bringen.

Wir haben unterschiedliche Server in unterschiedlichen Ländern, deshalb möchte ich mein Batch-Skript nicht für jedes Land mit dem entsprechenden Netzwerkpfad zum lokalen Server anpassen.

Antwort1

Dies kann mit Powershell durchgeführt werden

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

Antwort2

Hilfsskripte

Der Kommandozeilenprozessor unterstützt einigeUmgebungsvariablenfür System- und Benutzerpfade oder die auf andere Weise beim Erstellen dieser Pfade helfen können. Dies sind:

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

Sie können tippen, set | moreum die vollständige Liste zusammen mit den zugewiesenen Werten anzuzeigen. Es gibt jedoch keine native Möglichkeit, bestimmte Pfade abzurufen, die nicht aufgeführt sind, es sei denn, Sie können eine oder mehrere Variablen kombinieren und den tatsächlichen Pfad manuell erstellen.

Nachfolgend finden Sie einige hybride Batch-Skripte, die den Pfad zu einem bestimmtenShell-Ordner. Speichern Sie den Code unter ShellHelper.cmd(oder wie auch immer Sie möchten, behalten Sie nur die .cmdErweiterung bei). Das Skript akzeptiert einen einzigen Parameter, nämlich die Shell-Ordnerkennung (z. B. Favorites). Der Pfad wird dann in der %shellFolder%Variablen gespeichert.

Beispielverwendung

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

Bemerkungen

  • Im Gegensatz zur Powershell-Version funktioniert die VBScript-Version unter Windows 2000 und höher sofort. Für Ihren speziellen Einsatzzweck ist jede Version geeignet.

  • PowerShell ist in Windows 7 und höher integriert, muss in früheren Betriebssystemen jedoch manuell installiert werden.


VBScript-Version

Der größte Verdienst gebührt Jeb und Dbenham, die die hier verwendete Hybridtechnik entwickelt (und verfeinert) haben.

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

Unterstützte Bezeichner

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

NotizZusätzliche Shell-Ordner können unterstützt werden, indem die letzte Zeile durch Folgendes ersetzt wird:

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

In diesem Fall müssen Sie, um einen bestimmten Shell-Ordnerpfad abzurufen, den ihm zugewiesenen numerischen Wert übergeben. Um beispielsweise den FavoritesPfad abzurufen, müssen Sie den Wert verwenden 6. Alle Werte und ihre Bedeutung finden Sie im unten verlinkten Artikel.

Weiterführende Literatur


PowerShell-Version

@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

Unterstützte Kennungen

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 und höher

Zusätzlich zu den oben genannten Kennungen sind auch diese verfügbar:

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

NotizUm die Liste der verfügbaren zu erhalten, können Sie den folgenden Befehl in einer PowerShell-Konsole ausführen:

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

Weiterführende Literatur

verwandte Informationen