hdr-gilgalad
Goto Top

Fragen zu Freedisk (CMD)

Hallo,

ich hab in der Firma die Aufgabe in einer Command-File (CMD) den noch verfügbaren Festplattenspeicher auszulesen und anschließend mit Hilfe einer If-Anweisung die gesamte Operation abzubrechen oder bei genügend Platz fortzufahren.

Ich habe jetzt schon mit den beiden Dateien Freedisk und Diskuse aus dem Windows Recource Kit rumexperimentiert.

Bitte helft mir mal weiter. Ich hab jetzt schon auf mehreren Seiten nach Hilfe gesucht aber nirgendwo steht etwas, dass auch funktioniert. Vielleicht stelle ich mich auch zu blöd an.

Hier ein Teil des Quelltextes...

SET PATH=%PATH%;c:\bin\system32;j:\bin_23\system32;j:\bin25\system32
REM Hier liegen die Dateien des Recource Kits drin.
[...]
REM "Ueperpruefung des Speicherplatzes auf Laufwerk c:"
FREEDISK /dc: 2GB
IF FREEDISK=="OK" GOTO NEXT ELSE GOTO STOP
[...]

Danke

Content-ID: 15772

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

Ausgedruckt am: 22.11.2024 um 18:11 Uhr

Biber
Biber 09.09.2005 um 12:23:07 Uhr
Goto Top
Moin, HdR-Gilgalad,
ich bin mir ja nicht sicher, wo Du nach Hilfe gesucht hast... mach doch mal ein "FreeDisk /?"

Da kommt dann unter anderem:

Wenn Sie freedisk in einer Batchdatei verwenden, wird 0 zurückgegeben, falls ausreichend Speicherplatz verfügbar ist. Ist der Rückgabewert 1, ist nicht genügend Speicherplatz verfügbar.
Beispiele
Um zu ermitteln, ob auf Laufwerk C: mindestens 50 MB an freiem Speicherplatz verfügbar sind, geben Sie Folgendes ein:

freedisk 50mb


Dann also bei Dir:
FREEDISK /d c: 2GB
Rem ERRORLEVEL 1 bedeutet: zu wenig Platz (*gg oder Syntaxfehler in der FreeDisk-Zeile)
IF ERRORLEVEL 1 GOTO STOP
:: sonst geht es hier weiter...

HTH
Frank / der Biber aus Bremen
HdR-Gilgalad
HdR-Gilgalad 09.09.2005 um 14:06:20 Uhr
Goto Top
Wenn Sie freedisk in einer Batchdatei verwenden, wird 0 zurückgegeben, falls ausreichend Speicherplatz verfügbar ist. Ist der Rückgabewert 1, ist nicht genügend Speicherplatz verfügbar.
Beispiele
Um zu ermitteln, ob auf Laufwerk C: mindestens 50 MB an freiem Speicherplatz verfügbar sind, geben Sie Folgendes ein: freedisk 50mb

Dann also bei Dir:
FREEDISK /d c: 2GB
Rem ERRORLEVEL 1 bedeutet: zu wenig Platz (*gg oder Syntaxfehler in der FreeDisk-Zeile)
IF ERRORLEVEL 1 GOTO STOP


Das hab ich ausprobiert. Erstens wird dann die Informationsnachricht "Wenn Sie freedisk..." angezeigt, was eigentlich nicht sichbar sein sollte und zweitens wird immer die Nachricht ausgegeben, dass nicht genügend Platz verfügbar wäre. Auf der Platte sind allerdings noch 4 GB frei.
Biber
Biber 09.09.2005 um 14:30:50 Uhr
Goto Top
Tja, Simon,
dann hab ich wohl einen Syntax-Fehler eingebaut, sorry. Vielleicht das Leerzeichen zwischen "/D" und "c:"

Bei M$ steht in der Doku:
freedisk [/s Computer [/u [Domäne\]Benutzer [/p [Kennwort]]]] [/d Laufwerk] [Wert]
...wenn das nicht stimmt, kann ich auch nicht helfen.

Ich hab auch noch nie ein M$-Utilitily zur Ermittlung des freien Plattenplatzes gebraucht, ich schreib sowas lieber selbst *gg* oder mache es mit Bordmitteln vom CMD-Prompt aus:
for /f "tokens=3" %i in ('dir /-c ^|find "Bytes frei"') do echo %i

Vielleicht meldet sich ja noch jemand, der sich mit diesem neumodischen Krams auskennt.
Trotzdem schönes Wochenende
Biber
HdR-Gilgalad
HdR-Gilgalad 09.09.2005 um 14:36:22 Uhr
Goto Top
Das hab ich auch schon probiert. Trotzdem danke für die Hilfe und ebenfalls ein schönes WE.

Falls irgendwer ne Idee hat, bitte meldet euch bei mir. DANKE
Biber
Biber 09.09.2005 um 14:44:41 Uhr
Goto Top
Sonst lass doch einfach die Parameter "/d c:" wech.. face-wink
HdR-Gilgalad
HdR-Gilgalad 09.09.2005 um 15:09:22 Uhr
Goto Top
Ich muss diese neuen Tools nicht unbedingt nutzen. Welche anderen Möglichkeiten stehen denn noch zur Verfügung?
Biber
Biber 09.09.2005 um 15:40:19 Uhr
Goto Top
Na, Simon,
nun aber nicht kneifen - wir werden doch wohl so ein Kasper-Utility mit einem Parameter ohne Syntaxfehler starten können...

Gibt denn "FreeDisk 2Gb" auch eine Fehlermeldung?
Die Bildschirmmeldung besagt ja nur, dass die Parameter verkehrt waren, das muss sich doch knacken lassen..

Und zum Thema andere Utilities - die haben alle (ziemlich) die gleiche Syntax, warum also wechseln? Die nennen sich dann "Freespace", "DskSpace" oder ähnlich. Aber Du hast Du doch jetzt ein schönes und ganz legales Tool.

Gibt ja nur begrenzt viele mögliche Fehleingaben:
- "/d c:" ist falsch? also probeweise weglassen.
Immer noch Fehler? Dann ist "2GB" ist falsch.. also das Original-M$-Beispiel mit "50mb" probieren. Immer noch Fehler? Bill ausm Bett klingeln. Mit Klage wegen Nicht-Einhaltung zugesicherter Eigenschaften drohen (Streitwert 480 Mio US$). Mail an Chef. CC an Computerbild. BCC an mich.
HdR-Gilgalad
HdR-Gilgalad 12.09.2005 um 08:23:44 Uhr
Goto Top
Hab alle Möglichkeiten durchprobiert. Nichts davon funktioniert.

Mein Quelltext sieht folgendermaßen aus:

@echo OFF
SET LANG=german
TITLE Test FreeDisk
SET PATH=%PATH%;c:\Test
SET datecode=0
SET shipcode=0

REM "Ueperpruefung des Speicherplatzes auf Laufwerk c:"

FREEDISK /d c: 50mb
REM ERRORLEVEL 1 bedeutet: zu wenig Platz (*gg oder Syntaxfehler in der FreeDisk-Zeile)
IF ERRORLEVEL 1 GOTO STOP

ECHO Es steht genug Speicherplatz für die Installation zur Verfuegung!
ECHO
ECHO Achtung! Fenster nicht schliessen!!!
ECHO 1. Kopieren der CAX - Installationsdateien ... Dauer ca. 15 Minuten!
ECHO

SLEEP 10

Exit

:STOP

ECHO Es steht nicht genug Speicherplatz zur Verfuegung!
ECHO Bitte loeschen Sie nicht mehr verwendete Dateien auf Laufwerk C
ECHO und starten Sie die Installation erneut!
ECHO
ECHO Installation wird Abgebrochen!

SLEEP 10

Exit

Ich muss das heute fertig machen. Also dringend...
HdR-Gilgalad
HdR-Gilgalad 12.09.2005 um 09:15:59 Uhr
Goto Top
Jetzt hab ich gerade beim googeln gesehen, dass dieses Tool nicht unter WinXP funktioniert. Gibt es andere Möglichkeiten? Entweder über andere Tools (z.B. diskuse) oder direkt über Befehle...
Biber
Biber 12.09.2005 um 12:07:42 Uhr
Goto Top
Moin, HdR-Gilgalad,
da bin ich nicht drauf gekommen, dass der Freedisk nicht unter XP läuft. *kopfschüttel

Also sind die besten Alternativstrategien, die mir auf an einem Montag einfallen:
1) schnell nach irgendeinem Freeware-Utility suchen. Einige Freeware-Plattformen haben (glaube ich) eine Rubrik "Disk/Platten-Utitilies"
2) oder hoffen, dass hier jemand noch schneller einen Link postet
3) über Bordmittel prüfen, z.B. mit dem Dir-Schnipsel oben:
(im Batch: )
:: <b>eine </b>Outputzeile vom "DIR"-Befehl enthält die freien Bytes... diese Zeile anhand von "suchtext" finden  
:: ?? set suchtext="Bytes frei"  && Rem bei mir, deutsche Version  
:: ?? set suchtext="bytes free"  && Rem bei englischer Version... also passt bei beiden:  
<b>set Suchtext="ytes fre" </b>  

:: (?) bei engl. Version: for /f "tokens=3" %%i in ('dir /-c ^|find /i %suchtext% ') do echo %%i>"%temp%  
for /f "tokens=3" %%i in ('dir /-c ^|find /i %suchtext') do echo %%i>"%temp%\SetFreeOnC.tmp"  
for /f "tokens=3" %%i in ('dir "%temp%\SetFreeOnC.tmp"^|find ".tmp"') do Set /a LenofBytesfree=%%i-2  
for /f "tokens=3" %%i in ('dir /-c ^|find /i %suchtext%') do Set Freebytes=%%i  
:: ich kann hier nicht die freien Gigabytes in einer Zahl speichern. 
:: Weil M$'s Doof-Dos so große Zahlen wie Gigabyte nicht verwursten kann.  
:: hat irgendwas mit 32-Byte-Länge zu tun, redet sich Bills Bande raus. 
:: also ganz brutal vorgehen.... wie lang ist der Text (alle Ziffern in der Bytes-free-Angabe) ?

:: mehr als 10 Gigabyte frei (Ziffernfolge länger als 10 Ziffern)?
IF %LenOfBytesFree% GTR 10 goto AllesPrima

::weniger als 1 Gigabyte frei (Ziffernfolge kürzer als 10 Ziffern)?
IF %LenOfBytesFree% LSS 10 goto STOP
:: Ärgerlich, nun muss ich tiefer einsteigen
:: Hier sind es genau 10 Ziffern - also 1 bis 9 GigaByte. Ich könnte jetzt die erste Ziffer prüfen:
:: ich könnte jetzt schreiben ...IF %FreeBytes:~0,1% GTR 2 goto AllesPrima
:: ich könnte jetzt schreiben ...IF %FreeBytes:~0,1% LSS 2 goto STOP
:: Mist, jetzt, sind es 1 oder 2 Komma irgendwas GigaByte, jetzt brauch ich einen Taschenrechner
:: 2 Gigabyte sind *grübel* ...2147483648 Byte, schätze ich, also:
IF %FreeBytes:~0,4% LSS 2148 Goto STOP
:: wie gesagt, ich kann NICHT den Zahlenwert von %FreeBytes& direkt vergleichen als numerischen Wert. 
:: wer es nicht glaubt: bitte am Prompt eingeben "Set /a test=2147483648"  
....

Gibt bestimmt eleganteres, aber so funktioniert es, wenn ich keine Denk- oder Tippfehler drinhabe.

Frank / Biber und Montagmorgenmuffel aus Bremen
[Edit]
war nur auf deutsche Version ausgelegt.
Variable %suchtext% eingebaut für Handling zumindest von dt. und englischer OSVersion
[/Edit]
HdR-Gilgalad
HdR-Gilgalad 12.09.2005 um 13:25:32 Uhr
Goto Top
Aus deinem Tipp folgt dies

C:\>Goto CheckSpace

C:\>for /F "tokens=3" %i in ('dir /-c |find "Bytes frei"') do echo %i 1>"C:\DOCU
ME~1\skoenen\LOCALS~1\Temp\SetFreeOnC.tmp"

C:\>for /F "tokens=3" %i in ('dir "C:\DOCUME~1\skoenen\LOCALS~1\Temp\SetFreeOnC.
tmp"|find ".tmp"') do Set /a LenofBytesfree=%i-2
<font color="Red">File Not Found</font>

C:\>for /F "tokens=3" %i in ('dir /-c |find "Bytes frei"') do Set Freebytes=%i

C:\>REM mehr als 10 Gigabyte frei (Ziffernfolge l&#931;nger als 10 Ziffern)?
<font color="Red">10 was unexpected at this time.</font>

C:\>IF GTR 10 goto AllesPrima

C:\>

Weiter geht er nicht...
Biber
Biber 12.09.2005 um 13:48:57 Uhr
Goto Top
Na, HdR-Gilgalad,
der gesunde Menschenverstand sagt mir:
Dann liefert der Dir-Befehl bei Dir nicht ein "Bytes frei" ...Wahrscheinlich eher "bytes free" oder so.
Überprüf das ( mit "dir") und ändere das doch mal bitte.

Alles andere würde mich sehr erstaunen.

Aber ein anderer Fehler ist drin, sehe ich grad:
es muss natürlich %Freebytes:~0,4% heißen (die Tilde fehlt).
Ich editiere das mal oben schnell.

bis gleich
Biber
Biber 12.09.2005 um 14:50:54 Uhr
Goto Top
So,
habe oben noch schnell das Handling für englische Version eingebaut.
netto hat die Freespace-Ermittlung mit Bordmitteln nun schon 7 Batchzeilen - bitte schreib jetzt nicht zurück, dass Du nun doch ein Freeware-GetFreeSpace-Utility gefunden hast und diese Eierei für die Tonne war face-wink
HdR-Gilgalad
HdR-Gilgalad 13.09.2005 um 08:45:45 Uhr
Goto Top
Zunächst mal vielen Dank für deine Mühe. Und nein ich habe kein Tool gefunden, dass mir weiterhilft.

Jetzt habe ich aber immer noch ein kleines Problem, wenn ich den Quelltext in dieser Weise ausführe gibt er mir den Infotext, es sei nicht genug Platz verfügbar. Es sind aber noch 1,76 GB frei. Höchst wahrscheinlich habe ich etwas falsch gemacht. Reicht es eigentlich nicht zu prüfen ob weniger als 2 GB (aktueller Stand vorher 1 GB) frei sind? Und bei allem anderen einfach fortzufahren?

Mein Quelltext sieht jetzt folgendermaßen aus


@echo OFF
SET LANG=german
TITLE Test_4
SET PATH=%PATH%;c:\bin\system32;j:\bin_23\system32;j:\bin25\system32
SET datecode=0
SET shipcode=0
SET LOGPATH=j:
SET LOG=%LOGPATH%\SETUP\LOG\%COMPUTERNAME%_WF2Setup.txt

ECHO LOGFILE: %LOGPATH%\WF2_Update\%COMPUTERNAME%.log
CLS

Goto CheckSpace
REM Ruft die Unterprozedur auf

:CheckSpace
REM eine Outputzeile vom "DIR"-Befehl enthaelt die freien Bytes... diese Zeile anhand von "suchtext" finden
REM set suchtext="Bytes frei" && Rem bei mir, deutsche Version.
REM set suchtext="bytes free" && Rem bei englischer Version.
SET Suchtext="Bytes free"

REM for /f "tokens=3" %%i in ('dir /-c ^|find /i %suchtext% ') do echo %%i>"%temp%
for /f "tokens=3" %%i in ('dir /-c ^|find /i %suchtext% ') do echo %%i>"%temp%\SetFreeOnC.tmp"
for /f "tokens=3" %%i in ('dir "%temp%\SetFreeOnC.tmp"^|find ".tmp"') do Set /a LenofBytesfree=%%i-2
for /f "tokens=3" %%i in ('dir /-c ^|find /i %suchtext%') do Set Freebytes=%%i
REM Zahlen im GB-Bereich koennen bei DOS nicht in einer Zahl gespeichert werden.
REM Also folgendermassen vorgehen: Wie lang ist der Text (alle Ziffern in der Bytes-free-Angabe)

REM Pruefen ob mehr als 10 Gigabyte frei (Ziffernfolge laenger als 10 Ziffern)
IF %LenOfBytesFree% GTR 10 goto PROCEED

IF %FreeBytes:~0,1% GTR 2 goto PROCEED
IF %FreeBytes:~0,1% LSS 2 goto STOP

REM Pruefen ob weniger als 1 Gigabyte frei (Ziffernfolge kuerzer als 10 Ziffern)
IF %LenOfBytesFree% LSS 10 goto STOP

IF %FreeBytes:~0,4% LSS 2148 Goto STOP


:PROCEED
cls
ECHO *
ECHO * Auf Ihrer Festplatte ist genuegend Speicherplatz vorhanden. *
ECHO * Die Installation wird nun gestartet. *
ECHO
*
sleep 30
Exit


:STOP
cls
ECHO *
ECHO * Es ist nicht genuegend Speicherplatz auf dem Datentraeger verfuegbar. *
ECHO * Bitte loeschen Sie nicht mehr verwendete Dateien und starten Sie *
ECHO * die Installation erneut. *
ECHO *
sleep 30
Exit


...und du hattest recht. Ich benutze eine Englische Version von XP. Brauche aber dieses Tool für beide Versionen, wenn sich dass nicht in einem Text kombinieren lässt.
Biber
Biber 13.09.2005 um 09:28:19 Uhr
Goto Top
Moin, HdR-Gilgalad,

zwei Stellen springen mir noch ins Auge:

1. mit dem Suchtext "bytes fre" statt "bytes free" sollte es unter dt. und engl. Version laufen.
Für die dt. Version kann ich mich für "Bytes frei" verbürgen, die englische sollte "bytes free" beinhalten. Da der Find-Befehl um Schalter /i erweitert ist (ignoriere Klein/Großschreibung), sollte es mit Suchtext "bytes fre" klappen.

2. Du hast die falsche Reihenfolge:
Bei Dir:
REM Pruefen ob mehr als 10 Gigabyte frei (Ziffernfolge laenger als 10 Ziffern) 
IF %LenOfBytesFree% GTR 10 goto PROCEED 
REM <font color=red>hier weißt Du noch nicht, ob 200 Byte oder 4000 KByte oder 8 GByte frei sind!</font>
REM <font color=red>Was soll also das Prüfen der ersten Ziffer bringen?</font>
IF %FreeBytes:~0,1% GTR 2 goto PROCEED 
IF %FreeBytes:~0,1% LSS 2 goto STOP 

REM Pruefen ob weniger als 1 Gigabyte frei (Ziffernfolge kuerzer als 10 Ziffern) 
IF %LenOfBytesFree% LSS 10 goto STOP 

IF %FreeBytes:~0,4% LSS 2148 Goto STOP 
Richtiger:
REM Pruefen ob mehr als 10 Gigabyte frei (Ziffernfolge laenger als 10 Ziffern) 
IF %LenOfBytesFree% GTR 10 goto PROCEED 

REM Pruefen ob weniger als 1 Gigabyte frei (Ziffernfolge kuerzer als 10 Ziffern) 
IF %LenOfBytesFree% LSS 10 goto STOP 

:: ---> nur wenn Du nach den beiden Prüfungen hier ankommst, hast Du genau die Länge 10, also zw. 1 und 9 GByte

IF %FreeBytes:~0,1% GTR 2 goto PROCEED   && rem Zeile ist verzichtbar...
IF %FreeBytes:~0,1% LSS 2 goto STOP          && rem Zeile ist verzichtbar...
IF %FreeBytes:~0,4% LSS 2148 Goto STOP   && rem kann alles, was die 2 Vorzeilen können
HTH Biber
Biber
Biber 13.09.2005 um 11:11:38 Uhr
Goto Top
P.S. Was ich schon seit Tagen in Deinem Batch nicht verstehe:
Was sollen denn die beiden Anweisungen "exit" in den Blöcken :STOP und :PROCEED geplanterweiser bewirken?
Wenn ich ein Batch wäre (ist ja gottseidank nicht so) würde ich an dieser Stelle den Batch beenden - vollkommen egal, ob genug Plattenplatz da ist oder nicht.
Falls dieser Plattenplatzprüf-Batch von einem anderen Batch aufgerufen wird, solltest Du vielleicht im Falle "im Block :STOP gelandet" aussteigen mit "exit 1" (also ein Errorlevel setzen) und bei Beenden im Zweig "PROCEED" explizit mit "exit 0" den Batch verlassen.

Dann kannst Du im aufrufenden Programm prüfen
...
Call CheckMirDenSpace
IF ERRORLEVEL 1  GOTO :eof
:: kannst sofort aussteigen... gesagt ist alles... Bildschirmmeldungen hatte ja der Mini-batch übernommen
:: und bei Errorlevel 0 landest Du in den nachsten Zeilen...
::...MachMirDenInstallKrams
....

Biber
HdR-Gilgalad
HdR-Gilgalad 13.09.2005 um 12:13:02 Uhr
Goto Top
Hier gibts noch Probleme

REM Pruefen ob mehr als 10 Gigabyte frei (Ziffernfolge laenger als 10 Ziffern)
IF %LenOfBytesFree% GTR 10 goto PROCEED

Gibt "10 was unexpected at this time" wieder, wenn Sie gestartet wird.
HdR-Gilgalad
HdR-Gilgalad 13.09.2005 um 13:11:43 Uhr
Goto Top
Bist du so lieb und schreibst mir mal den gesamten Scripttext auf. Ich habe den Überblick verloren und wahrscheinlich ein paar unnötige Fehler eingebaut. Bei mir erscheint jetzt immer die Meldung, dass nicht genügend freier Speicher verfügbar wäre.

Ich weiß jetzt nicht mehr weiter...
Bitte hilf mir noch ein letztes Mal!
Biber
Biber 13.09.2005 um 15:13:25 Uhr
Goto Top
Nur die Ruhe, HdR-Gilgalad,

wir habens doch gleich...
.. die Skizze oben (vom 12.09.2005 um 12:07:42 Uhr) ist wahr/richtig/gut, läuft unter deutschem /englischem OS ab W2k und wahrscheinlich auch unter Wasser.

Egal, hier komplett und ungetestet:
bo Check2GigaAndInstall.bat
@ECHO OFF 
SET LANG=german 
TITLE Test_4 
SET PATH=%PATH%;c:\bin\system32;j:\bin_23\system32;j:\bin25\system32 
SET datecode=0 
SET shipcode=0 
SET LOGPATH=j: 
SET LOG=%LOGPATH%\SETUP\LOG\%COMPUTERNAME%_WF2Setup.txt 

ECHO LOGFILE: %LOGPATH%\WF2_Update\%COMPUTERNAME%.log 
CLS 

Goto CheckSpace
REM Ruft die Unterprozedur auf 
Rem und kommt entweder wieder aus :PROCEED nach :INSTALL oder kommt nicht wieder (über STOP beendet)

:INSTALL

:: #### Hier die eigentliche Inst. einbauen oder aufrufen
:: #### (setup... oder eigene Befehle....)


goto :eof
----Ende Batch; ende der Welt

-----------------------
:CheckSpace 
REM eine Outputzeile vom "DIR"-Befehl enthaelt die freien Bytes... diese Zeile anhand von "suchtext" finden   
REM suchtext="Bytes fre(i)" deutsche Version. / "bytes fre(e)" bei englischer Version.   
SET Suchtext="Bytes fre"   

for /f "tokens=3" %%i in ('dir /-c ^|find /i %suchtext% ') do (  
    echo %%i>"%temp%\SetFreeOnC.tmp"  
    Set Freebytes=%%i  )
for /f "tokens=3" %%i in ('dir "%temp%\SetFreeOnC.tmp"^|find ".tmp"') do Set /a LenofBytesfree=%%i-2   
REM Zahlen im GB-Bereich koennen bei DOS nicht in einer Zahl gespeichert werden. 
REM Also folgendermassen vorgehen: Wie lang ist der Text (alle Ziffern in der Bytes-free-Angabe) 
REM Pruefen ob mehr als 10 Gigabyte frei (Ziffernfolge laenger als 10 Ziffern) 
IF %LenOfBytesFree% GTR 10 goto PROCEED 

REM Pruefen ob weniger als 1 Gigabyte frei (Ziffernfolge kuerzer als 10 Ziffern) 
IF %LenOfBytesFree% LSS 10 goto STOP 
REM die ersten 4 von insgesamt 10 Stellen vergleichen (2 GByte = 2147xxxyyy byte)
IF %FreeBytes:~0,4% LSS 2148 Goto STOP 

:PROCEED 
cls 
ECHO *************************************************************** 
ECHO * Auf Ihrer Festplatte ist genuegend Speicherplatz vorhanden. * 
ECHO * Die Installation wird nun gestartet. * 
ECHO *************************************************************** 
sleep 30 
::--------------nix Exit 
GOTO INSTALL
----------------
:STOP 
cls 
ECHO *************************************************************************
ECHO * Es ist nicht genuegend Speicherplatz auf dem Datentraeger verfuegbar. * 
ECHO * Bitte loeschen Sie nicht mehr verwendete Dateien und starten Sie * 
ECHO * die Installation erneut. * 
ECHO *************************************************************************sleep 30 
Exit 1 
Schicht im Schacht... diese Zeile wird nie erreicht 
snapp Check2GigaAndInstall.bat

Ich habe jetzt KEIN Setlocal gesetzt... alle hier gesetzten Umgebungsvariablen sind noch verfügbar (also auch Dein %Datecode% und der %Schiffskoch%, %Log% ...)
...und die eigentlichen Inst-Zeilen fehlen halt noch..

Schönen Tag Dir
Biber
HdR-Gilgalad
HdR-Gilgalad 13.09.2005 um 16:09:04 Uhr
Goto Top
So ich schätze erstmal mein Problem war, das das Programm auf der englischen Oberfläche noch zu Problemen führt. Da muss ich selber nochmals reinschauen.

Was jetzt am Ende noch übrigbleibt ist das folgende kleine Problem:

<font color="darkgreen">REM die ersten 4 von insgesamt 10 Stellen vergleichen (2 GByte = 2147xxxyyy byte)
IF %FreeBytes:~0,4% LSS 2148 Goto STOP</font>


an dieser Stelle erkennt er nicht, dass auf der Festplatte nur noch 1,7 GB frei sind. In diesem Fall sollte er ja eigentlich mit der entsprechenden Fehlermeldung abbrechen. Ich weiß nicht woran das liegt. Hab schon versucht die Zahl zu verändern, aber mit dem gleichen Ergebnis. Falls du da jetzt noch eine letzte Idee hast, wäre ich dir bis in alle Ewigkeit dankbar face-wink

Ich wünsch dir was

Beste Grüße

Simon / der Gilgalad
Biber
Biber 13.09.2005 um 17:06:59 Uhr
Goto Top
Hmm, Simon,

kann fast nur noch an einer Schwachstelle liegen:
Ich prüfe ja mit dem "Dir"- Befehl in der Zeile
for /f "tokens=3" %%i in ('dir /-c ^|find /i %suchtext% ') do   
...
immer nur das Laufwerk, auf dem ich mich zufällig grad befinde. Bzw. das Laufwerk, von dem aus der Batch gestartet wurde.

Da die Installation aber entweder "fest verdrahtet" auf Lw C:\ stattfinden soll oder auf das Laufwerk %SystemDrive% (ist auch fast immer Cface-smile erfolgen soll, können wir das eben noch ändern. Angenommen, es soll Lw. C: sein:
for /f "tokens=3" %%i in ('dir <b>c: </b> /-c ^|find /i %suchtext% ') do   
...oder
for /f "tokens=3" %%i in ('dir <b>%SystemDrive% </b> /-c ^|find /i %suchtext% ') do   
...


Ist im Moment für mich die einzige Erklärung.
Der Batch (so wie gepostet) läuft bei mir - wenn ich ihn vom USB-Stick starte in den Zweig STOP - von Laufwerk C: aus in den Zweig PROCEED. So hätte ich es auch erwartet.

Sonst bitte temporär (wenn das Einsetzen des Inst-Lws nichts gebracht hat) oben einfügen:
<b> Echo Freespace ist [%FreeSpace%] ..die ersten 4 Stellen sind:  [%FreeBytes:~0,4%]
pause</b>
IF %FreeBytes:~0,4% LSS 2148 Goto STOP 

Wenns nicht klappen sollte, schick mir bitte eine Nachricht.
Ich hätte doch bei Onelinern bleiben sollen. *grummel*
HdR-Gilgalad
HdR-Gilgalad 13.09.2005 um 17:28:45 Uhr
Goto Top
Ich probiers morgen aus... und wehe das klappt nicht face-wink

Ich sag schonmal herzlichsten Dank und einen schönen Abend noch...

Beste Grüße

Simon
Biber
Biber 17.09.2005 um 18:13:59 Uhr
Goto Top
@HdR-Gilgalad
>Wenns nicht klappen sollte, schick mir bitte eine Nachricht.
Nachtrag: Wenns klappen sollte, bitte auch.. face-wink

Thx
Biber