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
GELÖST

Verzeichnissgröße per Batch vergleichen.

Frage Entwicklung Batch & Shell

Mitglied: cced-de

cced-de (Level 1) - Jetzt verbinden

19.06.2011 um 20:39 Uhr, 5849 Aufrufe, 20 Kommentare, 2 Danke

Hallo zusammen,
ich möchte die Größe eines Verzeichnisses auslesen, danach soll geprüft werden, ob der Inhalt des Verzeichnisses 4 GB überschreitet.
Ist dies der Fall, soll ein Archiv aus dem Verzeichniss mittels 7Zip erstellt werden und mehrere Volumes daraus erstellt werden.
Ist der Verzeichnissinhalt kleiner als 4 GB, soll nur ein gewöhnliches Archiv ohne Volumes erstellt werden.

Hier mein Ansatz:

01.
Set PackFile=%startdir%%ordner% 
02.
	IF /i [%2]==[/R] for /R "%~1" %%a in (.) do @%0 "%%a" %3 
03.
	if not [%2]==[] Set /a "Level=%2+2" 
04.
	if defined level for /f "delims=\ tokens=1,%level%" %%i in ("%~1") do if not [%%j]==[] goto :eof 
05.
	If exist "%PackFile%" (    
06.
	  for /f "tokens=3" %%c in ('dir "%PackFile%" /s ^2^>nul^| findstr /c:"Datei(en)" ') do set DirSize=%%c 
07.
08.
	set "space20=                 " 
09.
	if defined DirSize set "Dirsize=%space20%%Dirsize%" 
10.
	if defined DirSize echo %DirSize:~-15%    %~f1 
11.
	 
12.
	if %DirSize:~-15% GTR 4.294.967.296 goto Packe4GB 
13.
	if %DirSize:~-15% LEQ 4.294.967.296 goto PackeNormal  
14.
	 
15.
	:Packe4GB 
16.
	"%ProgramFiles%\7-Zip\7z.exe" a -v4g -p1.gEhEiMeSwOrT_$ -tzip -mx0 -r "%Ordner%.zip"  
17.
	goto PackEnd 
18.
	 
19.
	:PackeNormal 
20.
	echo kleiner oder gleich 4 GB 
21.
	"%ProgramFiles%\7-Zip\7z.exe" a -p1.gEhEiMeSwOrT_$ -tzip -mx0 -r "%Ordner%.zip"  
22.
	echo ! - %Date% - %Time%: %Ordner%.zip erstellt.>>%SLOG% 
23.
	:PackEnd
Ich denke mein Problem liegt bei Zeile 12 + 13.
Wenn ich so ein Verzeichnis mit z.B. 98.769.255 MB Prüfen lasse, geht das Script davon aus, dass es größer als 4 GB ist.
Ich denke mal es liegt an den Dezimalstellen.

Hat da vielleicht jemand eine Lösung für mich?
Gruß CCED
Mitglied: Friemler
19.06.2011 um 21:25 Uhr
Hallo CCED,

zur Bestimmung der Größe aller Dateien im übergebenen Verzeichnis und darunterliegenden Verzeichnissen würde ich folgendes verwenden:
01.
set "SrcDir=%~1" 
02.
 
03.
for /f "tokens=3" %%s in ('dir /s /-c "%SrcDir%" ^| find "Datei(en)"') do ( 
04.
  set Size=%%s 
05.
)
Dann brauchst Du das Batchscript nicht rekursiv starten, was ohne ein CALL vor dem @%0 in Zeile 2 ja sowieso nicht funktioniert hätte.

Wegen dem Parameter /s durchläuft der DIR-Befehl das übergebene und alle darunterliegenden Verzeichnisse und zeigt wegen /-c in der Zusammenfassung die Gesamtgröße aller Dateien ohne Tausendertrennzeichen an. DIR /S gibt einmal nach jedem Verzeichnis die Größe aller darin enthaltenen Dateien aus und zum Schluss die Größe aller angezeigten Dateien. Alle diese Zeilen enthalten den String "Datei(en)" und werden von FIND deshalb gefunden, der letzte Fund ist der richtige.

Gruß
Friemler


[EDIT]
HALT, STOP!!
Mit Variablen in Batchscript kann nur bis +2147483648=2^31 gerechnet werden! Du musst Deine Grenzen anders setzen, 4GB sind zu groß.
[/EDIT]
Bitte warten ..
Mitglied: pieh-ejdsch
19.06.2011 um 21:51 Uhr
moin cced-de,

die CMD rechnet nur bis knapp 2 Giga so wie sie soll.
und wenn die Linke Seite Größer als 999999 ist Rechnet es auch immer richtig.
entweder Du Rechnest das zusammen wie hier Inhalt Verschieben zum sichern auf Externe Medien nach Dateianzahl bzw Medium Groesse mit Logging in Ordner

oder Teilst Den Ausgabestring der Größe in zwei bestandteile

01.
for /f "tokens=3" %%i in ('dir /s /-c^|findstr /c:" Datei(en),"^|findstr /e /c:" Bytes"') do set "DirSize=%%i" 
02.
 
03.
if %DirSize% gtr 999999 (set "over=%DirSize:~0,-6%" && set "under=%DirSize:~6%") else goto :PackNormal 
04.
 
05.
if %over% equ 4294 if %under% gtr 967296 goto :Packe4GB 
06.
if %over% gtr 4294 goto :Packe4GB

[Edit] etwas zu spät und noch eine Option /s speniert [7eDIT]
Gruß Phil
Bitte warten ..
Mitglied: cced-de
19.06.2011 um 22:30 Uhr
Zitat von Friemler:
[EDIT]
Mit Variablen in Batchscript kann nur bis +2147483648=2^31 gerechnet werden! Du musst Deine Grenzen anders setzen, 4GB sind zu
groß.
[/EDIT]

Hallo Friemler,
hmmm naja, in manchen Verzeichnissen liegen nun mal mehr als 4 GB..
Es gibt doch sicher die Möglichkeit die Ergebniszahl aus meinem Script z.B. 85.477.161.058 (85 GB)
in eine z. B. zweistellige Zahl (85) umzuwandeln... und dann diese einfach mit dem angegebenen Wert 4
zu "vergleichen"... Also
01.
if %DirSize:~-15% GTR 4 goto Packe4GB 
oder ?
Gruß CCED
Bitte warten ..
Mitglied: cced-de
19.06.2011 um 22:36 Uhr
Hallo Phil,

auch dir danke für deine Mühe.
Ich habe deinen Ansatz mal ein wenig verändert:
01.
Set PackFile=%startdir%%ordner% 
02.
 
03.
	for /f "tokens=3" %%i in ('dir %PackFile% /s /-c^|findstr /c:" Datei(en),"^|findstr /e /c:" Bytes"') do set "DirSize=%%i" 
04.
			  
05.
	if %DirSize% gtr 999999 (set "over=%DirSize:~0,-6%" && set "under==%DirSize:~6%") else goto :PackeNormal 
06.
	if %over% equ 4294 if %under% gtr 967296 goto :Packe4GB 
07.
	if %over% gtr 4294 goto :Packe4GB
aber auch so glaubt cmd immer der Wert sei größer als 4294.


Gruß CCED
Bitte warten ..
Mitglied: Friemler
19.06.2011 um 22:58 Uhr
Das Problem ist, dass Du mit dem Wert der Variablen Size aus meinem Skript nicht rechnen und auch keine Vergleiche durchführen kannst. Bei einem GTR oder LSS usw. wird intern auch gerechnet. Wenn der Wert von Size dann gößer 2^31 - 1 ist (die größtmögliche positive Zahl), kommt wieder Mist dabei heraus.

Ich habe die Tage in irgendeinem Batchforum einen Beitrag zum Thema gesehen, ich schau mal nach, ob ich den nochmal finde. In dem Beitrag ging es um das Rechnen mit noch viel größeren Zahlen.

Gruß
Friemler
Bitte warten ..
Mitglied: pieh-ejdsch
19.06.2011 um 23:04 Uhr
in Zeile 05 ist ein = beim SET zuviel. Das hatte ich schon weg-editiert. Du hast dieses aber noch mit drinnen. Probier es nochmal.

Gruß Phil
Bitte warten ..
Mitglied: cced-de
19.06.2011 um 23:25 Uhr
Hi Phil...
the same

habe das = mal rausgenommen, funktioniert aber nicht!
So siehst jetzt aus...

01.
 	Set PackFile="Y:\TestOrdner" 
02.
	for /f "tokens=3" %%i in ('dir "%PackFile%" /s /-c^|findstr /c:" Datei(en),"^|findstr /e /c:" Bytes"') do set "DirSize=%%i" 
03.
			  
04.
	if %DirSize% gtr 999999 (set "over=%DirSize:~0,-6%" && set "under=%DirSize:~6%") else goto :PackeNormal 
05.
	if %over% equ 4294 if %under% gtr 967296 goto :Packe4GB 
06.
	if %over% gtr 4294 goto :Packe4GB 
07.
 
08.
	:Packe4GB 
09.
	echo Packe Groesser als 4 GB 
10.
 
11.
	"%ProgramFiles%\7-Zip\7z.exe" a -v4g -pDasPasswort -tzip -mx0 -r "%Ordner%.zip"  
12.
	echo 1>%Startdir%%Ordner%\!Erledigt.DoNot.!UT 
13.
 
14.
	goto PackEnd 
15.
	 
16.
	:PackeNormal 
17.
	echo Packekleiner oder gleich 4 GB 
18.
 
19.
 
20.
	"%ProgramFiles%\7-Zip\7z.exe" a -pDasPasswort -tzip -mx0 -r "%Ordner%.zip"  
21.
	goto PackEnd 
22.
 
Gruß CCED
Bitte warten ..
Mitglied: bastla
19.06.2011 um 23:45 Uhr
Hallo cced-de!

Es wundert mich, dass es mit dem Komma in der Zeile 2 überhaupt funktioniert hätte - versuch es einmal mit
for /f "tokens=3" %%i in ('dir "%PackFile%" /s /-c^|findstr /c:" Datei(en)"^|findstr /e /c:" Bytes"') do set "DirSize=%%i"
Ansonsten solltest Du mit einem
goto :PackeNormal
als (zusätzliche) Zeile 7 bessere Chancen haben ...

Grüße
bastla
Bitte warten ..
Mitglied: Friemler
19.06.2011 um 23:48 Uhr
Hallo CCED,

ich habe das Script gefunden. Es stammt von hier. In dem dort erhältlichen ZIP-File sind noch andere mathematische Unterprogramme zum Verrechnen von großen Zahlen enthalten (addieren, multiplizieren).

Ich habe Deinen und meinen Code mit dem von mir angepassten Script verschmolzen. Die Copyright-Klausel des Autors ist enthalten.

01.
@echo off 
02.
 
03.
setlocal 
04.
 
05.
 
06.
set "SrcDir=%~1" 
07.
 
08.
for /f "tokens=3" %%s in ('dir /s /-c "%SrcDir%" ^| find "Datei(en)"') do ( 
09.
  set "Size=%%s" 
10.
11.
 
12.
 
13.
call :IsLarger %Size% 4294967296 
14.
 
15.
if %ERRORLEVEL% equ 1 goto :Packe4GB 
16.
goto :PackeNormal 
17.
 
18.
 
19.
:Packe4GB 
20.
"%ProgramFiles%\7-Zip\7z.exe" a -v4g -p1.gEhEiMeSwOrT_$ -tzip -mx0 -r "%SrcDir%.zip" 
21.
goto :PackEnd 
22.
 
23.
 
24.
:PackeNormal 
25.
"%ProgramFiles%\7-Zip\7z.exe" a -p1.gEhEiMeSwOrT_$ -tzip -mx0 -r "%SrcDir%.zip" 
26.
 
27.
 
28.
:PackEnd 
29.
echo ! - %Date% - %Time%: %SrcDir%.zip erstellt.>>%SLOG% 
30.
 
31.
exit /b 
32.
 
33.
 
34.
 
35.
:IsLarger 
36.
setlocal enabledelayedexpansion 
37.
  ::DETERMINE IF FIRST VAR IS LARGER THAN SECOND 
38.
  ::NUMBERS OF UP TO ~4000 DIGITS CAN BE COMPARED, NO MORE THAN ~8100 DIGITS COMBINED 
39.
  ::SYNTAX: CALL ISLARGER %_VAR1% %_VAR2% 
40.
  ::hieyeque1@gmail.com - drop me a note telling me 
41.
  ::if this has helped you.  Sometimes I don't know if anyone uses my stuff 
42.
  ::Its free for the world to use. 
43.
  ::I retain the rights to it though, you may not copyright this 
44.
  ::to prevent others from using it, you may however copyright works 
45.
  ::as a whole that use this code. 
46.
  ::Just don't try to stop others from using this through some legal means. 
47.
  ::CopyRight Brian Williams 5/18/2009 
48.
  :: %_VAR1% = VARIABLE AGAINST WHICH WE SHALL COMPARE 
49.
  :: %_VAR2% = VARIABLE TO BE COMPARED 
50.
 
51.
  ::Rückgabewert  0 -> _Var1 = _Var2 
52.
  ::Rückgabewert  1 -> _Var1 > _Var2 
53.
  ::Rückgabewert -1 -> _Var1 < _Var2 
54.
 
55.
  SET _NUM1=%1 
56.
  SET _NUM2=%2 
57.
 
58.
  FOR /L %%A IN (1,1,2) DO ( 
59.
    FOR /L %%B IN (0,1,9) DO ( 
60.
      SET _NUM%%A=!_NUM%%A:%%B=%%B ! 
61.
62.
63.
 
64.
  FOR %%A IN (!_NUM1!) DO SET /A _NUM1CNT+=1 & SET _!_NUM1CNT!_NUM1=%%A 
65.
  FOR %%A IN (!_NUM2!) DO SET /A _NUM2CNT+=1 & SET _!_NUM2CNT!_NUM2=%%A 
66.
 
67.
  IF !_NUM1CNT! NEQ !_NUM2CNT! ( 
68.
    IF !_NUM1CNT! GTR !_NUM2CNT! ( 
69.
      EXIT /B 1 
70.
    ) ELSE ( 
71.
      EXIT /B -1 
72.
73.
74.
 
75.
  FOR /L %%A IN (1,1,!_NUM1CNT!) DO ( 
76.
    IF !_%%A_NUM1! NEQ !_%%A_NUM2! ( 
77.
      IF !_%%A_NUM1! GTR !_%%A_NUM2! ( 
78.
        EXIT /B 1 
79.
      ) ELSE ( 
80.
        EXIT /B -1 
81.
82.
83.
84.
 
85.
EXIT /B 0
Gruß
Friemler


[EDIT]
Die Methode zur Ermittelung der Gesamtdateigröße von pieh-ejdsch ist sicherer.
[/EDIT]
Bitte warten ..
Mitglied: pieh-ejdsch
20.06.2011 um 00:27 Uhr
und zu dem von bastla als Zusatz in der Zeile 05. 2 einsen sponsoren
01.
if %over% equ 4294 if 1%under% gtr 1967296 goto :Packe4GB
Dann klappts auch mit den Vornullen.

Gruß Phil
Bitte warten ..
Mitglied: ovu-p86
20.06.2011 um 00:32 Uhr
Hallo cced-de,

hier noch mal eine einfache Lösung.

Das Problem bisher lag, glaub ich, daran, daß die Auswertungen sich immer auf zu gr. Zahlen bezogen haben
(32-bit-Problem). Der kleine Zwischenschritt in Zeile 4 des cmd löst das Problem. Jetzt sind die Zahlen
handle, auswertbar.

Das "For" hab ich etwas geändert. Hab insbesondere auch hidden-, system- u.s.w Dateien mit einbezogen.
Wenn das nicht angegeben wird, ist das Ergebnis des "dir" verfälscht (System u. Hidden-Files fehlen dann
im Ergebnis).

01.
echo off 
02.
Set PackFile=E:\test 
03.
for /f "tokens=3" %%i  in ('dir "%PackFile%" /s /w /-c /a: d r h a s ^| findstr /c:Datei^(en^) ') do set DirSize=%%i 
04.
set DirSize=%DirSize:~0,-6% 
05.
 
06.
if %DirSize% LEQ 4293 echo ++++++ %DirSize% ist kleiner Grenze ++++++ 
07.
if %DirSize% GTR 4293 echo ++++++ %DirSize% ist groesser Grenze ++++++ 
08.
pause
Den cmd kannst du ja zunächst mal ausprobieren.
Bei mir haut er hin.
Einfach das "Set PackFile" im Script mit deinen Verz. anpassen und testen.

Das "echo" kannst du dann ja später, wenns passt, beim Einbau in deinen Scipt mit deinen Befehlen ersetzen.


Gruß
Uwe

[EDIT]
hab die Größe auf 4293 statt 4294 gesetzt, da ja 6 Stellen in der Größe abgeschnitten werden.
Bei 4294 könnte ja durch die fehlenden 6 Stellen das Ganze doch größer als 4GB sein
[/EDIT]
Bitte warten ..
Mitglied: cced-de
20.06.2011 um 01:01 Uhr
Ihr seit die Größten hier !!!

Alle drei Lösungen funktionieren!!!
Danke für eure Zeit und eure Hilfe !!

Hier nochmal der zusammenhängende Code von Phil... so wie er funktioniert !

01.
	Set PackFile="%startdir%%ordner%" 
02.
	for /f "tokens=3" %%i in ('dir "%PackFile%" /s /-c^|findstr /c:" Datei(en)"^|findstr /e /c:" Bytes"') do set "DirSize=%%i" 
03.
	if %DirSize% gtr 999999 (set "over=%DirSize:~0,-6%" && set "under=%DirSize:~6%") else goto :PackeNormal 
04.
	if %over% equ 4294 if 1%under% gtr 1967296 goto :Packe4GB 
05.
	if %over% gtr 4294 goto :Packe4GB 
06.
        goto :PackeNormal 
07.
         
08.
	:Packe4GB 
09.
	echo Packe Groesser als 4 GB 
10.
	"%ProgramFiles%\7-Zip\7z.exe" a -v4g -p1.gEhEiMeSwOrT_$ -tzip -mx0 -r %Ordner%.zip 
11.
	goto PackEnd 
12.
	 
13.
	:PackeNormal 
14.
	echo Packek leiner oder gleich 4 GB 
15.
	"%ProgramFiles%\7-Zip\7z.exe" a -p1.gEhEiMeSwOrT_$ -tzip -mx0 -r %Ordner%.zip  
16.
 
17.
	goto PackEnd
Nochmals meinen Dank!!

Gruß CCED (Markus)
Wird Zeit fürs Bett, um 05:00 Uhr ist die Nacht vorbei
Bitte warten ..
Mitglied: ovu-p86
20.06.2011 um 01:16 Uhr
Hallo cced-de,

eine Lösung reicht ja. Wenns funktioniert.

Aber würde dringend empfehlen beim "dir" noch "/a: d r h a s" anzufügen. (vielleicht etwas überkandidelt, aber unschädlich)
Wie gesagt, sonst ist das Ergebnis verfälscht. Hidden und System-Dateien werden im Ergebnis ohne das
nicht berücksichtigt.

Gruß
Uwe
Bitte warten ..
Mitglied: Biber
20.06.2011 um 01:44 Uhr
Nich' hauen jezz', ovu-p86,

Zitat von ovu-p86:
Aber würde dringend empfehlen beim "dir" noch "/a: d r h a s" anzufügen. (vielleicht etwas überkandidelt, aber unschädlich)
... in der Sache gebe ich dir (teilweise) recht - aber das Ergebnis "Alle Dateien mit welchem Attribut auch immer" bekommst du schneller mir "DIR /a *.*"

Und "teilweise" recht soll heissen. .it depends....
Wenn CCED nur die Dateien packt, die sinnvoll sind, dann gehören z.B. hidden files wie desktop.ini's nicht dazu.
Und in seinem Fall scheint es, er wolle auch nur "Daten" sichern = alles Sichtbare,

Grüße
Biber
Bitte warten ..
Mitglied: ovu-p86
20.06.2011 um 02:08 Uhr
Hallo Biber,

warum?

Eher, danke für den Hinweis. Wußte gar nicht, daß nur "/a" identisch mit "/a: d r h a s" ist.
Spart mir doch Schreibarbeit.

Ansonsten;
Meines Wissens nach haut 7-zip alles, also auch hidden u. system, ins zip.
Deshalb gehe ich bzgl. des Ergebnisses lieber auf Nummer sicher.
(Obwohl das hier natürlich eher theoretisch ist, da das Ganze ja noch gezippt also verkleinert wird
und dadurch eh genug Spielraum für ein ungenaues Größenergebnis ist, ohne das es Auswirkungen
hat.. Kommt also auf ein Pfund mehr nicht an.)

Das "it depends. ..." trifft natürlich zu. Bsp. wäre wenn ich die Größe eines Verz. abfrage, um hinterher
z.B. mit xcopy was zu kopieren (wo ich hidden u. system nicht eingeschlossen habe)


Gruß
Uwe
Bitte warten ..
Mitglied: bastla
20.06.2011 um 08:04 Uhr
@ovu-p86
... und wenn wir schon beim Thema sind:
dir /a-d
liefert alle Dateien ...

Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
20.06.2011 um 14:38 Uhr
moin,

da Friemler so einen Superschicken Code mit "nur zu verwenden mit Copyright Infos" hier hereingestellt hat (ich frag mich manchmal was bei ein bissel BatchZeilen geschütz werden muss???)

hier nochmal eine Absolut Free Variante davon:
01.
:: use this Batch without Copyright info only  
02.
@echo off 
03.
if "!os!" == "%OS%" (setlocal) else setlocal enabledelayedexpansion 
04.
set "Erste=0%~1" 
05.
set "Zweite=0%~2" 
06.
set "mehr=dasselbe wie" 
07.
for /f "Tokens=1,2 delims=:" %%a in (' 
08.
^( 
09.
for %%i in ^("" %1 %2 ""^) do @echo\%%~i 
10.
^)^|findstr /o "^"^|more +1 
11.
') do ( 
12.
	if defined GrA set /a GrB = %%a - 3*Zuviel - GrA 
13.
	if defined Zuviel if not defined GrA set /a GrA = %%a - 2*Zuviel 
14.
	if not defined Zuviel set /a Zuviel = %%a 
15.
16.
if %GrA% gtr %GrB% (set /a Max = GrA) else set /a Max = GrB 
17.
for /l %%i in (1,1,%Max%) do ( 
18.
	for /f %%j in ("!Erste:~-%%i,1! 0") do for /f %%k in ("!Zweite:~-%%i,1! 0") do ( 
19.
		if %%j gtr %%k set "mehr=mehr als" 
20.
		if %%j equ %%k set "mehr=!mehr!" 
21.
		if %%j lss %%k set "mehr=weniger als" 
22.
)	) 
23.
echo %1 ist %mehr% %2
Gruß Phil
Bitte warten ..
Mitglied: Friemler
20.06.2011 um 15:09 Uhr
Hallo pieh-ejdsch,

Zitat von pieh-ejdsch:
ich frag mich manchmal was bei ein bissel BatchZeilen geschütz werden muss???

der Autor des Codes kommt sehr wahrscheinlich aus USA und dort gibt es Softwarepatente. Er schreibt in seiner Copyright-Klausel ja auch, dass der Code frei ist, dass aber niemand anderes diesen Code unter sein Copyright stellen darf und somit anderen die Benutzung verbieten kann. Wohl kann aber fremder Code, der diesen Code benutzt, unter ein Copyright gestellt werden. Ich habe das dringelassen, weil ich mich nicht mit fremden Federn schmücken möchte.

Gruß
Friemler
Bitte warten ..
Mitglied: pieh-ejdsch
20.06.2011 um 15:37 Uhr
ach so is das gemeint - wer nicht Guttenbergen will soll die Quelle nicht Vergessen ... und den Doktor machen!

aber warum wird in diesem Code ein Errolevel 0 ausgeben wenn die Zahlen gleich sind?
Das Programm heist doch "isLarger" und nicht isEqual - naja das weiss nur der Brain äähhm ich meinte Brian.

Gruß Phil
Bitte warten ..
Mitglied: Friemler
20.06.2011 um 15:54 Uhr
Hey pieh-ejdsch,

das mit dem Errorlevel stammt von mir, das meinte ich u.a. mit Anpassungen. Ich habe mich bei den Codes (0, 1, -1) am Verhalten von vergleichbaren Funktionen in höheren Programmiersprachen orientiert.

Evtl. habe ich mit meinen Anpassungen aber auch die Funktion des Codes von Brian eingeschränkt. Er schreibt ja, dass damit zwei Zahlen von jeweils ca. 4000 Stellen verglichen werden können. Das könnte in meiner Version nicht mehr so sein, da das den internen Code zur Übergabe von Parametern überfordern könnte. Brian hat in seiner Originalversion die Namen von Variablen, die die zu vergleichenden Zahlen enthalten, übergeben, quasi ein "Call-By-Reference" in Batch. Damit wäre aber die Übergabe von Konstanten nicht möglich gewesen.

Schau Dir doch mal das Original an, wie gesagt, das ZIP-File enthält auch noch andere interessante Batch-Unterprogramme.

Gruß
Friemler
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst (Batch) Nummern vergleichen (3)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst Textdateien vergleichen BATCH (2)

Frage von FeudelFred zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Änderungsdatum von Dateien vergleichen und ältere löschen (10)

Frage von 129528 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...