Batch-Files (*.bat, *.cmd) unter Vista x64

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
User avatar
creibens
Junior Member
Junior Member
Posts: 25
Joined: 2004-09-13, 08:20 UTC
Location: Ronnenberg-Benthe

Batch-Files (*.bat, *.cmd) unter Vista x64

Post by *creibens »

Liebe Gemeinde,

ich bin heute auf ein merkwürdiges Phänomen gestoßen, welches ich mir zunächst nicht erklären konnte: Ich habe dieses Batch-File auf meinem System:

Code: Select all

for %%D in (C D E F G H I) do (
  title Defragmentierung von Laufwerk %%D:
  echo.
  echo --- Laufwerk %%D: ---
  echo.
  [b]defrag %%D: -v[/b]
)
Dieses funktioniert normal, wenn ich es über die Kommandozeile oder den Windows Explorer starte. Es funktioniert jedoch nicht aus dem TotalCommander (TC). Dort erhalte ich die Fehlermeldung:

Code: Select all

Der Befehl "defrag" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Ich habe mir daraufhin mal mit dem DOS-Kommando set die jeweilige Umgebung anzeigen lassen. Auf der Kommandozeile oder per Batch über den Explorer erhalte ich u.a. diese Zeilen:

Code: Select all

CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files

PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 23 Stepping 6,

ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
Wenn ich denselben Batch im TC starte, sieht dies jedoch so aus:

Code: Select all

CommonProgramFiles=C:\Program Files (x86)\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files

PROCESSOR_ARCHITECTURE=x86
PROCESSOR_ARCHITEW6432=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 23 Stepping 6,

ProgramFiles=C:\Program Files (x86)
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
Es scheint so, als ob ein Batch, welcher aus dem TC gestartet wird, in einer 32-Bit-Umgebung läuft (vermutlich deshalb, weil TC selber nur 32-bittig ist).

Kann man das irgendwie umgehen, oder muss ich auf eine 64-Bit-Version des TC warten? Ist eine solche überhaupt geplant?

Gruß. Claus
Gruß. Claus
User avatar
Dalai
Power Member
Power Member
Posts: 10003
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Es scheint so, als ob ein Batch, welcher aus dem TC gestartet wird, in einer 32-Bit-Umgebung läuft (vermutlich deshalb, weil TC selber nur 32-bittig ist).
Richtig, die x64-Systeme (XP und Vista) haben eine 32 Bit CMD und eine 64 Bit CMD. Die aus 32 Bit-Programmen heraus gestartete ist immer 32 bittig. Deshalb musst du damit leben oder einen anderen Weg finden, die CMD auf ein 64 Bit-Programm zu übergeben.

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Nicht ausgetestet (bin momentan 32bittig;), aber vielleicht hilft es ja eine Batchdatei:
defrag.bat wrote:%windir%\Sysnative\defrag.exe %1 %2 %3 %4 %5% 6% %7
im Verzeichnis %windir%\SysWOW64 abzulegen.

Oder mal ausprobieren ob sich die Umgebungsvariable ComSpec auf %windir%\Sysnative\cmd.exe setzen lässt.

Ein 32Bit Prozess sollte eigentlich problemlos eine 64Bit Exe aufrufen können.

Gruß
Holger
Post Reply