Benutzerverzeichnis, trotz der Ausführung eines anderen Users - Ist das möglich?
Hallo zusammen,
Ich möchte eine Batch Datei schreiben, welche auf das Benutzerverzeichnis "C:\Users\HansPeter\Desktop" zugreifen soll.
Das Problem ist jedoch, dass ich diese Batch Datei über unseren Software Verteiltool als Domain Administrator ausgeführt wird.
Wenn ich im Batch auf die Variable %username% zugreifen möchte, nimmt er mir den User Name vom den Domain Administrator.
Ist es möglich im Batch, trotz der Ausführung des Domain Administrators, auf das das Benutzerverzeichnis vom angemeldenten user zuzugreifen.
Ich möchte schlussendlich Files im Userverzeichnis vom angemeldeten User kopieren.
Vielen Dank bereits im Voraus!
Ich möchte eine Batch Datei schreiben, welche auf das Benutzerverzeichnis "C:\Users\HansPeter\Desktop" zugreifen soll.
Das Problem ist jedoch, dass ich diese Batch Datei über unseren Software Verteiltool als Domain Administrator ausgeführt wird.
Wenn ich im Batch auf die Variable %username% zugreifen möchte, nimmt er mir den User Name vom den Domain Administrator.
Ist es möglich im Batch, trotz der Ausführung des Domain Administrators, auf das das Benutzerverzeichnis vom angemeldenten user zuzugreifen.
Ich möchte schlussendlich Files im Userverzeichnis vom angemeldeten User kopieren.
Vielen Dank bereits im Voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 211524
Url: https://administrator.de/contentid/211524
Ausgedruckt am: 25.11.2024 um 23:11 Uhr
10 Kommentare
Neuester Kommentar
Hi Netgear das sollte mit dem Befehl
wmic computersystem get UserName gehen.
Output sieht dann ungefähr so aus
UserName
Domäne\meinnormaleruser
whoami
Domäne\meinadminuser
Hier nochmal nen kleiner Codeschnipsel dazu.
wmic computersystem get UserName gehen.
Output sieht dann ungefähr so aus
UserName
Domäne\meinnormaleruser
whoami
Domäne\meinadminuser
Hier nochmal nen kleiner Codeschnipsel dazu.
@echo off &setlocal
for /f "tokens=2 delims=\" %%a in ('wmic computersystem get Username') do (
set "t=%%a"
setlocal enabledelayedexpansion
echo User: !t!
)
@ Invisian
Gute Lösung ...
[Etwas OT]
Die Zuweisung an eine "gewöhnliche" Variable (im Beispiel: %t%) ist nur dann sinnvoll, wenn Du Teistrings bilden willst, die sich nicht per Delimiter trennen lassen (etwa die ersten 3 Zeichen ermitteln) - ansonsten kannst Du einfach die Schleifenvariable (hier: %%a) verwenden:
[/Etwas OT]
Grüße
bastla
Gute Lösung ...
[Etwas OT]
Die Zuweisung an eine "gewöhnliche" Variable (im Beispiel: %t%) ist nur dann sinnvoll, wenn Du Teistrings bilden willst, die sich nicht per Delimiter trennen lassen (etwa die ersten 3 Zeichen ermitteln) - ansonsten kannst Du einfach die Schleifenvariable (hier: %%a) verwenden:
@echo off &setlocal
for /f "tokens=2 delims=\" %%a in ('wmic computersystem get Username') do echo User: %%a
Grüße
bastla
Zitat von @bastla:
@ Invisian
Gute Lösung ...
[Etwas OT]
Die Zuweisung an eine "gewöhnliche" Variable (im Beispiel: %t%) ist nur dann sinnvoll, wenn Du Teistrings bilden
willst, die sich nicht per Delimiter trennen lassen (etwa die ersten 3 Zeichen ermitteln) - ansonsten kannst Du einfach die
Schleifenvariable (hier: %%a) verwenden:
[/Etwas OT]
Grüße
bastla
@ Invisian
Gute Lösung ...
[Etwas OT]
Die Zuweisung an eine "gewöhnliche" Variable (im Beispiel: %t%) ist nur dann sinnvoll, wenn Du Teistrings bilden
willst, die sich nicht per Delimiter trennen lassen (etwa die ersten 3 Zeichen ermitteln) - ansonsten kannst Du einfach die
Schleifenvariable (hier: %%a) verwenden:
@echo off &setlocal
> for /f "tokens=2 delims=\" %%a in ('wmic computersystem get Username') do echo User: %%a
>
Grüße
bastla
Hi bastla,
danke für die Info. Was for schleifen etc angeht stehe ich noch am Anfang und benutze einfach das was ich in anderen BAT Files finde und für nützliche halte. Dementsprechend bleiben da dann halt auch ab und zu Sachen über die nicht unbedingt nötig sind ^^
Mfg Invi
Hallo netgearsdk!
Was Du möchtest wäre ja eher
bzw ohne die Ausgabe einfach
Die Schleifenvariable %%a steht nur innerhalb der Schleife zur Verfügung - wenn der Wert auch außerhalb der Schleife benötigt wird, könntest Du ihn tatsächlich einer anderen Variablen zuweisen:
Grüße
bastla
Was Du möchtest wäre ja eher
@echo off &setlocal
for /f "tokens=2 delims=\" %%a in ('wmic computersystem get Username') do (
echo User: %%a
md "C:\Users\%%a\Downloads\test"
)
pause
for /f "tokens=2 delims=\" %%a in ('wmic computersystem get Username') do md "C:\Users\%%a\Downloads\test"
@echo off &setlocal
for /f "tokens=2 delims=\" %%a in ('wmic computersystem get Username') do set "User=%%a"
echo User: %User%
md "C:\Users\%User%\Downloads\test"
pause
bastla
Zitat von @bastla:
Hallo netgearsdk!
Was Du möchtest wäre ja eher
bzw ohne die Ausgabe einfach
Die Schleifenvariable %%a steht nur innerhalb der Schleife zur Verfügung - wenn der Wert auch außerhalb der Schleife
benötigt wird, könntest Du ihn tatsächlich einer anderen Variablen zuweisen:
Grüße
bastla
Hallo netgearsdk!
Was Du möchtest wäre ja eher
@echo off &setlocal
> for /f "tokens=2 delims=\" %%a in ('wmic computersystem get Username') do (
> echo User: %%a
> md "C:\Users\%%a\Downloads\test"
> )
> pause
>
for /f "tokens=2 delims=\" %%a in ('wmic computersystem get Username') do
> md "C:\Users\%%a\Downloads\test"
>
benötigt wird, könntest Du ihn tatsächlich einer anderen Variablen zuweisen:
@echo off &setlocal
> for /f "tokens=2 delims=\" %%a in ('wmic computersystem get Username') do set "User=%%a"
> echo User: %User%
> md "C:\Users\%User%\Downloads\test"
> pause
>
bastla
Hi Bastla,
super Arbeit da warst du ein wenig schneller als ich ^^ Allerdings ist da noch nen kleiner Fehler drin. Die Ausgabe der WMIC erhält standardmäßig so wies aussieht ein Leerzeichen am Ende. Dieses hast du beim delimiter nicht angegeben. Solange das Leerzeichen vom Delimiter nicht ausgenommen wird scheint es zu Fehlern zu kommen. Das obere Skript setzt dann Downloads\test nach vorne und danach die hälfte des Usernamens. Das untere Skript enthält dann das überflüssige Leerzeichen und funktioniert damit als Befehl dann auch nicht.
Mfg Invi