Batch-Datei

crossshot

verifiziertes Mitglied
Registriert
27. Aug. 2007
Beiträge
2.019
Real Name
Chris
Tach zusammen,

ich bin gerade dabei eine Batch-Datei zu schreiben, die mir aufgrund einer Programmumstellungen Daten die derzeit auf dem PC eines jeden Users liegen, auf ein Netzlaufwerk kopiert.

Problem ist, dass wir sowohl 32bit als auch 64bit System einsetzen und somit die Systemvariable "ProgramFiles" nicht ohne weiteres funktioniert.

Meine Idee war nun folgende:

Code:
set ProgRoot=%ProgramFiles%
if not "%ProgramFiles(x86)%" == "" set ProgRoot=%ProgramFiles(x86)%

xcopy "%ProgRoot%\Gevitas\REFLEX\User" "P:\Reflex\Userdaten" /Y /F /E

Auf meinem Windows 7 x64 System funktioniert es perfekt aber auf den Windows XP 32bit System bekomme ich setzen der Variblen ein "Zugriff verweigert".

Wo ist der Haken???? Ich verstehe es nicht!
 
Deine Batch ist falsch, wenn %Progroot% = C:\Programme ist dann setzt Du es auf %ProgrammFiles(x86)%

Besser ist: if "%PROCESSOR_ARCHITECTURE%"=="AMD64" goto 64BIT
 
32bit = C:\Programme
64bit = C:\Programme (x86)

Sollte passen, oder?

Und warum kommt bei XP dieser beschissene "Zugriff verweigert" Fehler :kopfkratz:

Alle User sind als lokale Admins an den PCs angemeldet!

Edit:

Ich bin ein Arsch :wall: :wall:

So sah der Code aus!
Code:
set ProgRoot=%ProgramFiles%
if not "%ProgramFiles(x86)%" == "" set ProgRoot=%ProgramFiles(x86)%
echo Programmordner -> %ProgRoot%

Und so muss er aussehen!!!!
Code:
set ProgRoot=%ProgramFiles%
if not "%ProgramFiles(x86)%" == "" set ProgRoot=%ProgramFiles(x86)%
echo %ProgRoot%

Das "Programmorder ->" hat er nicht verkraftet :wall:
 
Das geht nicht so, wenn die Variable nicht aufgelöst werden kann unter XP dann schreibt er diese nicht aufgelöst rein:

Code:
C:\>set variable=%gibtesnicht%
C:\>echo %variable%
%gibtesnicht%

Deswegen musst Du nach einer Unterschiedungsbedingung fragen anstatt einfach nur Blind die Variable zu setzen:

Code:
set ProgRoot=%ProgramFiles%
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" set ProgRoot=%ProgramFiles(x86)%
xcopy "%ProgRoot%\Gevitas\REFLEX\User" "P:\Reflex\Userdaten" /Y /F /E
 
Zurück
Oben Unten