PDA

Vollständige Version anzeigen : Variable in BAT-Datei für Benutzernamen?


belanglos
01.04.2008, 11:29
Hallo,

ich möchte mir eine BAT-Datei anfertigen, mit der ich diverse Sachen sicher. Gibt es eine Möglichkeit, dass der Benutzername in einem Pfad automatisch erkannt wird?

Wenn ich z.B. was sichern möchte, was unter "C:\Dokumente und Einstellungen\BENUTZERNAME\Lokale Einstellungen\Anwendungsdaten\Microsoft" gespeichert ist und das auch immer, egal unter welchem Benutzernamen, gibt es eine Variabel oder so, die ich in eine Befehlszeile für die BAT-Datei einbauen kann, so dass die BAT-Datei ohne Anpassung auf jedem PC ausgeführt werden könnte?

Vielen Dank im Voraus!

Gruß

ddh_WI
01.04.2008, 11:57
Hi Belanglos,

probier es mal hiermit

%USERPROFILE%

Das gibt direkt den Dokumentenpfad des aktuellen Benutzers wieder :
"c:\Dokumente und Einstellungen\Benutzer\"

Das kannst Du dann schön zusammensetzen
"%USERPROFILE%\Lokale Einstellungen\Anwendungsdaten\Microsoft"

Das sollte Dir erst einmal weiterhelfen.

Solltest Du noch weitere Fragen haben, einfach hier posten.

Gruß

Dirk

belanglos
01.04.2008, 16:36
Danke, hat mir schonmal weiter geholfen.

Kann jetzt auch noch so etwas ähnliches wie eine Abfrage erstellen, in der ich feststellen lasse, um welche Windows-Version (XP oder Vista) es sich handelt?

ddh_WI
02.04.2008, 08:14
Gern geschehn :)

Mit der Umgebungsvariable %OS% wird die Win-Version angezeigt.
Leider erscheint da bei XP auch Windows_NT

Du müsstest mal schauen, was er bei Vista ausgibt. Kann ich hier leider nicht probieren, da wir nirgendwo Vista nutzen.

Hilfreich könnte auch "reg query" sein

z.B.: reg query "Hkey_Current_User\Software\Microsoft\Office\"

Zum Auslesen der Office-Daten

Diese Infos habe ich mir selbst vor Längerem zusammengegoogelt.

Es gibt da recht viel Foren, die sich mit diesen Themen auseinandersetzen.

Viel Spaß denn noch

Dirk

~~~dexter~~~
02.04.2008, 11:49
@belanglos

Probiere es mal hiermit. Leider habe ich kein Vista zur Verfügung und kann es nicht unter Vista testen.


for /F "tokens=*" %%i in ('ver') do set osver=%%i
echo %osver%


Ausgabe Microsoft Windows XP [Version 5.1.2600]

Mit "tokens=3" würdest Du XP als Ausgabe bekommen.

belanglos
02.04.2008, 14:50
Vielen Dank euch beiden. Ich teste das heute Abend.

belanglos
03.04.2008, 16:13
Für diejenigen, die es interessiert:

Vista = Microsoft Windows [Version 6.0.6000]
XP = Microsoft Windows [Version 5.1.2600]

Wie könnte ich jetzt mit diesen informationen so was wie eine Abfrage erstellen? In Excel würde die so aussehen:

WENN(for /F "tokens=*" %%i in ('ver') do set osver=%%i echo %osver% = Microsoft Windows [Version 6.0.6000]; copy c:\beispiel c:\windows\blubb;WENN(for /F "tokens=*" %%i in ('ver') do set osver=%%i echo %osver% = Microsoft Windows [Version 5.1.2600];copy c:\beispiel2 c:\windows\blubb2;"Falsche Windows-Version))

Kann mir evtl. jemand sagen, wie das für eine Batch-Datei aussehen würde?

~~~dexter~~~
04.04.2008, 09:40
@belanglos
Wie könnte ich jetzt mit diesen informationen so was wie eine Abfrage erstellen?

Die If-Anweisung führt bedingte Verarbeitung in Batchprogrammen aus.


@echo off
for /F "tokens=4,5" %%i in ('ver') do set osver=%%i %%j
if "%osver%"=="[Version 5.1.2600]" echo Betriebssystem ist XP
if "%osver%"=="[Version 6.0.6000]" echo Betriebssystem ist Vista
pause

oder...

@echo off

ver | find "5.1.2600" > NUL
if not errorlevel 1 goto XP

ver | find "6.0.6000" > NUL
if not errorlevel 1 goto Vista

:XP
echo Betriebssystem ist xp

:Vista
echo Betriebssystem ist Vista
pause

belanglos
04.04.2008, 10:13
@belanglos


Die If-Anweisung führt bedingte Verarbeitung in Batchprogrammen aus.


@echo off
for /F "tokens=4,5" %%i in ('ver') do set osver=%%i %%j
if "%osver%"=="[Version 5.1.2600]" echo Betriebssystem ist XP
if "%osver%"=="[Version 6.0.6000]" echo Betriebssystem ist Vista
pause



Funktioniert soweit schonmal. Kann ich jetzt da wo " echo Betriebssystem ist XP" steht, eine Funktion wie z.B. copy einabauen?

~~~dexter~~~
04.04.2008, 14:00
Natürlich kannst Du die Befehle ersetzen. Hier hast Du.


@echo off
for /F "tokens=4,5" %%i in ('ver') do set osver=%%i %%j
if "%osver%"=="[Version 5.1.2600]" goto XP
if "%osver%"=="[Version 6.0.6000]" goto Vista

:XP
echo Betriebssystem ist XP
echo Daten werden kopiert ...
xcopy Quelle Ziel
goto Ende

:Vista
echo Betriebssystem ist Vista
echo Daten werden kopiert ...
xcopy Quelle Ziel
goto Ende

:Ende
echo Fertig!
pause

wedweewdwedwedwedwe
05.07.2008, 09:41
if "%osver%"=="Microsoft Windows [Version 6.0.6001]" echo Betriebssystem ist Vista SP1

...
bei mir zeigt er das "Version 6.0.6001" an...

Kann ich das Ergebnis auf "Version 6.0.60"untersuchen mit stringfunktionen?
Wie in BAtch

Das Find Beispiel funktioniert nicht in Win2000
mfg

Joachim Hofmann
06.07.2008, 00:22
Zu den Versionsnummern selbst kann ich nichts sagen.

Substrings erhalten ist mit Batch allerdings auch möglich (ab NT4)

http://www.ss64.com/ntsyntax/varsubstring.html

wedweewdwedwedwedwe
07.07.2008, 06:35
aber hätte noch ein Problemchen...
Möchte die batch verwenden um dateien von CD auf Festplatte zu kopieren.
...unter Vista...da sind allerdings die Ergebnisse verschieden wenn man als/oder NICHT als Administrator arbeitet!?

SET MA_PATH_NAME=%0%
liefert eine als admin einen Wert mit " am anfang und Ende uns ohne " wenn ich nicht als admin angemeldet bin.

%CD% liefert auch als admin einen ganz anderen Wert...?


MfG
Sascha

Joachim Hofmann
07.07.2008, 11:29
> ...unter Vista...da sind allerdings die Ergebnisse verschieden wenn man als/oder NICHT als Administrator arbeitet!?
welche Ergebnisse?

> SET MA_PATH_NAME=%0%
> liefert eine als admin einen Wert mit " am anfang und Ende uns ohne " wenn ich nicht als admin angemeldet bin.
Was soll deiner Erwartung nach in %0% stehen? Meinst du vielleicht einen Batch-Übergabeparameter?

> %CD% liefert auch als admin einen ganz anderen Wert...?
Die Variable %CD% liefert das aktuelle Verzeichnis, wie CD auf der Kommandozeile.


Siehe "Übersicht über die Eingabeaufforderung" in der Befehlszeilenreferenz (Datei ntcmds.chm)

wedweewdwedwedwedwe
07.07.2008, 11:51
Hallo und Danke,

1) %CD%
set MY_ACT_PATH=%CD%
...liefert das aktuelle Verzeichnis,stimmt,...auch unter Vista...
...ABER nicht wenn in unter Vista die .bat als adminstrator ausführe...
...dann ist %MY_ACT_PATH% nicht das verzeichnid wo die bat liegt....
Warum?

2)Darum versuchte ich den aktuellen Pfad unter Vista als admin manuell zu finden mit stringmanipulation und %0%...

%0% ist kein Paramerter (%1% wäre aber einer) aber der komplette Name mit Pfad der .bat-Datei....
lefert nicht als admin
"C:\mein_pfad.bat"
aber mit ausführen als admin...nur...
C:\mein_pfad.bat
...ohne Anführungszeichen...Warum?

MfG
Sascha