Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Fragen zu Freedisk (CMD)

Frage Entwicklung Batch & Shell

Mitglied: HdR-Gilgalad

HdR-Gilgalad (Level 1) - Jetzt verbinden

09.09.2005, aktualisiert 17.09.2005, 16150 Aufrufe, 23 Kommentare

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
Mitglied: Biber
09.09.2005 um 12:23 Uhr
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
Bitte warten ..
Mitglied: HdR-Gilgalad
09.09.2005 um 14:06 Uhr
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.
Bitte warten ..
Mitglied: Biber
09.09.2005 um 14:30 Uhr
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
Bitte warten ..
Mitglied: HdR-Gilgalad
09.09.2005 um 14:36 Uhr
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
Bitte warten ..
Mitglied: Biber
09.09.2005 um 14:44 Uhr
Sonst lass doch einfach die Parameter "/d c:" wech..
Bitte warten ..
Mitglied: HdR-Gilgalad
09.09.2005 um 15:09 Uhr
Ich muss diese neuen Tools nicht unbedingt nutzen. Welche anderen Möglichkeiten stehen denn noch zur Verfügung?
Bitte warten ..
Mitglied: Biber
09.09.2005 um 15:40 Uhr
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.
Bitte warten ..
Mitglied: HdR-Gilgalad
12.09.2005 um 08:23 Uhr
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...
Bitte warten ..
Mitglied: HdR-Gilgalad
12.09.2005 um 09:15 Uhr
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...
Bitte warten ..
Mitglied: Biber
12.09.2005 um 12:07 Uhr
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: )
01.
:: <b>eine </b>Outputzeile vom "DIR"-Befehl enthält die freien Bytes... diese Zeile anhand von "suchtext" finden 
02.
:: ?? set suchtext="Bytes frei"  && Rem bei mir, deutsche Version 
03.
:: ?? set suchtext="bytes free"  && Rem bei englischer Version... also passt bei beiden: 
04.
<b>set Suchtext="ytes fre" </b> 
05.
 
06.
:: (?) bei engl. Version: for /f "tokens=3" %%i in ('dir /-c ^|find /i %suchtext% ') do echo %%i>"%temp% 
07.
for /f "tokens=3" %%i in ('dir /-c ^|find /i %suchtext') do echo %%i>"%temp%\SetFreeOnC.tmp" 
08.
for /f "tokens=3" %%i in ('dir "%temp%\SetFreeOnC.tmp"^|find ".tmp"') do Set /a LenofBytesfree=%%i-2 
09.
for /f "tokens=3" %%i in ('dir /-c ^|find /i %suchtext%') do Set Freebytes=%%i 
10.
:: ich kann hier nicht die freien Gigabytes in einer Zahl speichern.  
11.
:: Weil M$'s Doof-Dos so große Zahlen wie Gigabyte nicht verwursten kann. 
12.
:: hat irgendwas mit 32-Byte-Länge zu tun, redet sich Bills Bande raus.  
13.
:: also ganz brutal vorgehen.... wie lang ist der Text (alle Ziffern in der Bytes-free-Angabe) ? 
14.
 
15.
:: mehr als 10 Gigabyte frei (Ziffernfolge länger als 10 Ziffern)? 
16.
IF %LenOfBytesFree% GTR 10 goto AllesPrima 
17.
 
18.
::weniger als 1 Gigabyte frei (Ziffernfolge kürzer als 10 Ziffern)? 
19.
IF %LenOfBytesFree% LSS 10 goto STOP 
20.
:: Ärgerlich, nun muss ich tiefer einsteigen 
21.
:: Hier sind es genau 10 Ziffern - also 1 bis 9 GigaByte. Ich könnte jetzt die erste Ziffer prüfen: 
22.
:: ich könnte jetzt schreiben ...IF %FreeBytes:~0,1% GTR 2 goto AllesPrima 
23.
:: ich könnte jetzt schreiben ...IF %FreeBytes:~0,1% LSS 2 goto STOP 
24.
:: Mist, jetzt, sind es 1 oder 2 Komma irgendwas GigaByte, jetzt brauch ich einen Taschenrechner 
25.
:: 2 Gigabyte sind *grübel* ...2147483648 Byte, schätze ich, also: 
26.
IF %FreeBytes:~0,4% LSS 2148 Goto STOP 
27.
:: wie gesagt, ich kann NICHT den Zahlenwert von %FreeBytes& direkt vergleichen als numerischen Wert.  
28.
:: wer es nicht glaubt: bitte am Prompt eingeben "Set /a test=2147483648" 
29.
....
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]
Bitte warten ..
Mitglied: HdR-Gilgalad
12.09.2005 um 13:25 Uhr
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...
Bitte warten ..
Mitglied: Biber
12.09.2005 um 13:48 Uhr
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
Bitte warten ..
Mitglied: Biber
12.09.2005 um 14:50 Uhr
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
Bitte warten ..
Mitglied: HdR-Gilgalad
13.09.2005 um 08:45 Uhr
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.
Bitte warten ..
Mitglied: Biber
13.09.2005 um 09:28 Uhr
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:
01.
REM Pruefen ob mehr als 10 Gigabyte frei (Ziffernfolge laenger als 10 Ziffern)  
02.
IF %LenOfBytesFree% GTR 10 goto PROCEED  
03.
REM <font color=red>hier weißt Du noch nicht, ob 200 Byte oder 4000 KByte oder 8 GByte frei sind!</font> 
04.
REM <font color=red>Was soll also das Prüfen der ersten Ziffer bringen?</font> 
05.
IF %FreeBytes:~0,1% GTR 2 goto PROCEED  
06.
IF %FreeBytes:~0,1% LSS 2 goto STOP  
07.
 
08.
REM Pruefen ob weniger als 1 Gigabyte frei (Ziffernfolge kuerzer als 10 Ziffern)  
09.
IF %LenOfBytesFree% LSS 10 goto STOP  
10.
 
11.
IF %FreeBytes:~0,4% LSS 2148 Goto STOP 
Richtiger:
01.
REM Pruefen ob mehr als 10 Gigabyte frei (Ziffernfolge laenger als 10 Ziffern)  
02.
IF %LenOfBytesFree% GTR 10 goto PROCEED  
03.
 
04.
REM Pruefen ob weniger als 1 Gigabyte frei (Ziffernfolge kuerzer als 10 Ziffern)  
05.
IF %LenOfBytesFree% LSS 10 goto STOP  
06.
 
07.
:: ---> nur wenn Du nach den beiden Prüfungen hier ankommst, hast Du genau die Länge 10, also zw. 1 und 9 GByte 
08.
 
09.
IF %FreeBytes:~0,1% GTR 2 goto PROCEED   && rem Zeile ist verzichtbar... 
10.
IF %FreeBytes:~0,1% LSS 2 goto STOP          && rem Zeile ist verzichtbar... 
11.
IF %FreeBytes:~0,4% LSS 2148 Goto STOP   && rem kann alles, was die 2 Vorzeilen können
HTH Biber
Bitte warten ..
Mitglied: Biber
13.09.2005 um 11:11 Uhr
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
01.
... 
02.
Call CheckMirDenSpace 
03.
IF ERRORLEVEL 1  GOTO :eof 
04.
:: kannst sofort aussteigen... gesagt ist alles... Bildschirmmeldungen hatte ja der Mini-batch übernommen 
05.
:: und bei Errorlevel 0 landest Du in den nachsten Zeilen... 
06.
::...MachMirDenInstallKrams 
07.
....
Biber
Bitte warten ..
Mitglied: HdR-Gilgalad
13.09.2005 um 12:13 Uhr
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.
Bitte warten ..
Mitglied: HdR-Gilgalad
13.09.2005 um 13:11 Uhr
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!
Bitte warten ..
Mitglied: Biber
13.09.2005 um 15:13 Uhr
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
01.
@ECHO OFF  
02.
SET LANG=german  
03.
TITLE Test_4  
04.
SET PATH=%PATH%;c:\bin\system32;j:\bin_23\system32;j:\bin25\system32  
05.
SET datecode=0  
06.
SET shipcode=0  
07.
SET LOGPATH=j:  
08.
SET LOG=%LOGPATH%\SETUP\LOG\%COMPUTERNAME%_WF2Setup.txt  
09.
 
10.
ECHO LOGFILE: %LOGPATH%\WF2_Update\%COMPUTERNAME%.log  
11.
CLS  
12.
 
13.
Goto CheckSpace 
14.
REM Ruft die Unterprozedur auf  
15.
Rem und kommt entweder wieder aus :PROCEED nach :INSTALL oder kommt nicht wieder (über STOP beendet) 
16.
 
17.
:INSTALL 
18.
 
19.
:: #### Hier die eigentliche Inst. einbauen oder aufrufen 
20.
:: #### (setup... oder eigene Befehle....) 
21.
 
22.
 
23.
goto :eof 
24.
----Ende Batch; ende der Welt 
25.
 
26.
----------------------- 
27.
:CheckSpace  
28.
REM eine Outputzeile vom "DIR"-Befehl enthaelt die freien Bytes... diese Zeile anhand von "suchtext" finden  
29.
REM suchtext="Bytes fre(i)" deutsche Version. / "bytes fre(e)" bei englischer Version.  
30.
SET Suchtext="Bytes fre"  
31.
 
32.
for /f "tokens=3" %%i in ('dir /-c ^|find /i %suchtext% ') do ( 
33.
    echo %%i>"%temp%\SetFreeOnC.tmp" 
34.
    Set Freebytes=%%i  ) 
35.
for /f "tokens=3" %%i in ('dir "%temp%\SetFreeOnC.tmp"^|find ".tmp"') do Set /a LenofBytesfree=%%i-2  
36.
REM Zahlen im GB-Bereich koennen bei DOS nicht in einer Zahl gespeichert werden.  
37.
REM Also folgendermassen vorgehen: Wie lang ist der Text (alle Ziffern in der Bytes-free-Angabe)  
38.
REM Pruefen ob mehr als 10 Gigabyte frei (Ziffernfolge laenger als 10 Ziffern)  
39.
IF %LenOfBytesFree% GTR 10 goto PROCEED  
40.
 
41.
REM Pruefen ob weniger als 1 Gigabyte frei (Ziffernfolge kuerzer als 10 Ziffern)  
42.
IF %LenOfBytesFree% LSS 10 goto STOP  
43.
REM die ersten 4 von insgesamt 10 Stellen vergleichen (2 GByte = 2147xxxyyy byte) 
44.
IF %FreeBytes:~0,4% LSS 2148 Goto STOP  
45.
 
46.
:PROCEED  
47.
cls  
48.
ECHO ***************************************************************  
49.
ECHO * Auf Ihrer Festplatte ist genuegend Speicherplatz vorhanden. *  
50.
ECHO * Die Installation wird nun gestartet. *  
51.
ECHO ***************************************************************  
52.
sleep 30  
53.
::--------------nix Exit  
54.
GOTO INSTALL 
55.
---------------- 
56.
:STOP  
57.
cls  
58.
ECHO ************************************************************************* 
59.
ECHO * Es ist nicht genuegend Speicherplatz auf dem Datentraeger verfuegbar. *  
60.
ECHO * Bitte loeschen Sie nicht mehr verwendete Dateien und starten Sie *  
61.
ECHO * die Installation erneut. *  
62.
ECHO *************************************************************************sleep 30  
63.
Exit 1  
64.
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
Bitte warten ..
Mitglied: HdR-Gilgalad
13.09.2005 um 16:09 Uhr
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

Ich wünsch dir was

Beste Grüße

Simon / der Gilgalad
Bitte warten ..
Mitglied: Biber
13.09.2005 um 17:06 Uhr
Hmm, Simon,

kann fast nur noch an einer Schwachstelle liegen:
Ich prüfe ja mit dem "Dir"- Befehl in der Zeile
01.
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 C erfolgen soll, können wir das eben noch ändern. Angenommen, es soll Lw. C: sein:
01.
for /f "tokens=3" %%i in ('dir <b>c: </b> /-c ^|find /i %suchtext% ') do 
...oder
01.
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:
01.
<b> Echo Freespace ist [%FreeSpace%] ..die ersten 4 Stellen sind:  [%FreeBytes:~0,4%] 
02.
pause</b> 
03.
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*
Bitte warten ..
Mitglied: HdR-Gilgalad
13.09.2005 um 17:28 Uhr
Ich probiers morgen aus... und wehe das klappt nicht

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

Beste Grüße

Simon
Bitte warten ..
Mitglied: Biber
17.09.2005 um 18:13 Uhr
@HdR-Gilgalad
>Wenns nicht klappen sollte, schick mir bitte eine Nachricht.
Nachtrag: Wenns klappen sollte, bitte auch..

Thx
Biber
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
CMD Verschlüsslung ( Batch ) (9)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
Schleife mit todos CMD

Frage von TommyDerWalker zum Thema Batch & Shell ...

Exchange Server
Allgemeine Fragen zum Exchange 2010 (3)

Frage von Leo-le zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...