netgearsdk
Goto Top

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!

Content-Key: 211524

Url: https://administrator.de/contentid/211524

Printed on: April 16, 2024 at 18:04 o'clock

Member: bastla
bastla Jul 15, 2013 at 15:37:57 (UTC)
Goto Top
Hallo netgearsdk!

Das Einzige, was mir trotz Deiner ausführlichen Problembeschreibung dazu einfiele, wäre:
xcopy "C:\Users\%User%\*" "D:\%test%\"
Grüße
bastla
Member: Biber
Biber Jul 15, 2013 at 19:03:49 (UTC)
Goto Top
[OT]
Moin bastla,

hmmja, rate mal, was das Einzige war, das mir zu diesem Beitrag einfiel...

Aber dann dachte ich: Hey, der hat doch noch Potential...

Aber es war ganz, ganz knapp vor einer Spontanreaktion..

Grüße
Biber
[/OT]
Member: netgearsdk
netgearsdk Jul 16, 2013 at 07:51:55 (UTC)
Goto Top
Hallo @bastla

Tut mir leid, ich habe die Frage ausführlicher formuliert.
Hoffe jetzt ist meine Frage klar.

Danke & Gruß
Member: Invisan
Invisan Jul 16, 2013 updated at 08:53:16 (UTC)
Goto Top
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.


@echo off &setlocal
for /f "tokens=2 delims=\" %%a in ('wmic computersystem get Username') do (  
  set "t=%%a"  
  setlocal enabledelayedexpansion
  echo User: !t!
)
Member: bastla
bastla Jul 16, 2013 at 09:00:22 (UTC)
Goto Top
@ Invisian
Gute Lösung ... face-smile

[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  
[/Etwas OT]

Grüße
bastla
Member: Invisan
Invisan Jul 16, 2013 at 09:10:57 (UTC)
Goto Top
Zitat von @bastla:
@ Invisian
Gute Lösung ... face-smile

[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  
> 
[/Etwas OT]

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
Member: netgearsdk
netgearsdk Jul 16, 2013 updated at 09:41:48 (UTC)
Goto Top
Hallo bastla
Hallo Invisa

Vielen Dank für eure Antworten!
Jedoch möchte ich z.b. einen Ordner im Benutzerverzeichnis erstellen.

@echo off &setlocal
for /f "tokens=2 delims=\" %%a in ('wmic computersystem get Username') do echo User: %%a  
mkdir "C:\Users\%%a\Downloads\test"  
pause

Er nimmt im Pfad die Variable nicht an.
In anderen Programmiersprachen kann man ja den Pfad / String unterbrechen und mit & Variable & hinzufügen und anschliessend den Rest des Pfads eingeben. Wie ist das im Batch möglich?
Besten Dank!
Member: bastla
bastla Jul 16, 2013 updated at 11:37:45 (UTC)
Goto Top
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
bzw ohne die Ausgabe einfach
for /f "tokens=2 delims=\" %%a in ('wmic computersystem get Username') do md "C:\Users\%%a\Downloads\test"
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:
@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
Grüße
bastla
Member: Invisan
Invisan Jul 16, 2013 at 12:48:17 (UTC)
Goto Top
Zitat von @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
> 
bzw ohne die Ausgabe einfach
for /f "tokens=2 delims=\" %%a in ('wmic computersystem get Username') do
> md "C:\Users\%%a\Downloads\test"
> 
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:
@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
> 
Grüße
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
Member: netgearsdk
netgearsdk Jul 18, 2013 updated at 13:51:18 (UTC)
Goto Top
Hallo zusammen
@Invisan
@bastla

Danke euch beiden.
Ich habe das Problem folgendermassen gelöst:

@echo off &setlocal
for /f "tokens=2 delims=\" %%a in ('wmic computersystem get Username') do set "User=%%a"  
echo User: %User%
set str=%User: =%
echo "C:\Users\%str%\Downloads\test"  
pause


Vielen Dank nochmals....
MFG