Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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

Vergleichen von Dateigrößen per Batch

Frage Entwicklung Batch & Shell

Mitglied: BKAMk2

BKAMk2 (Level 1) - Jetzt verbinden

11.09.2007, aktualisiert 12.09.2007, 4900 Aufrufe, 9 Kommentare

Hab euch gestern entdeckt und hoffe ihr könnt mir helfen.

Also ich bin ein totaler Programier noob.
Hab kurz Java gemacht aber nicht wirklich verstanden und wollte einen neustart mit der Batch Programierung machen.

Also ich brauch eine Batch, die jeweils 2 Dateien mitteinander vergleicht. Entscheident dafür ist die Größe und der Name.
Insgesamt sind es 6 Dateien, also 3 mal 2 Dateien vergleichen.
Die Dateien sind in 2 verschiedenen Ordner einer ist Lokal auf jedem Rechner und einer (der aktuelle) ist auf unserem Server.
Die Dateien gibt es jeweils 2 mal...also 2 mal packages.xml, 2 mal hosts.xml und 2 mal profiles.xml.

Also Quasi so:

Updates Ordner auf Server

:::profiles.xml:::
:::packages.xml:::
:::hosts.xml:::

Lokaler Ordner auf Rechnern

::profiles.xml:::
:::packages.xml:::
:::hosts.xml:::

Die profiles.xml soll mit der anderen profiles.xml verglichen werden.
Die hosts.xml soll mit der hosts.xml verglichen werden.
Und die packages.xml soll mit der packages.xml verglichen werdeb.

Also entscheident sollten die Größe der dateien sein.
Diese unterscheiden sich aber nur minimal.
Also 15kb zu 15,2kb oder so...

Ich werde später noch mehr hilfe brauchen aber ich hab das der übersicht halber mal editiert.^^

Danke schonmal für eure Hilfe!

Gruss BKAMk2
Mitglied: miniversum
11.09.2007 um 18:28 Uhr
Mal ungetestet und nur für eine der Drei paare so (die andern gehen dan entsprechend):
@echo off
set localdir="C:"
set serverdir="X:"
FOR /F "delims= " %%l in ('dir /b "%localdir%\profiles.xml"') do set localsize=%~zl
FOR /F "delims= " %%s in ('dir /b "%serverdir%\profiles.xml"') do set serversize=%~zs
if %localsize% gtr %serversize% (
echo locale Datei ist groesser
) else (
echo Datei auf Server ist groesser
)

miniversum
Bitte warten ..
Mitglied: BKAMk2
12.09.2007 um 08:15 Uhr
Danke schonmal miniversum.

Leider treten bei mir 2 Fehler auf.

1. Die folgende Verwendung des Pfadparameters zur Ersetzung eines Batchparameters ist ungültig: %~zl

2. Geben Sie CALL /? oder FOR /? ein, um herauszufinden, welche Formate gültig sind.
Syntaxfehler.

Was soll ich machen? Wie kann ich die Fehler beseitigen? Und warum werden keine Netzlaufwerke erkannt?!?

Danke
Bitte warten ..
Mitglied: Biber
12.09.2007 um 08:34 Uhr
Moin BKAMk2,

ändere mal bitte die beiden SET-Zuweisungen, z.B.
....set localsize=%~zl
...so ab, dass vor der dynamischen Variablen ZWEI Prozentzeichen stehen. Also:
--->....set localsize=%%~zl

Dann passt es besser.

Grüße
Biber
Bitte warten ..
Mitglied: BKAMk2
12.09.2007 um 08:55 Uhr
Danke Biber.

Der Syntaxfehler ist draussen.
Bleiben nur noch die anderen =)

Also ich poste mal meine batch Datei und die Ausgabe:
01.
>echo 
02.
 
03.
 
04.
>SET localdir=C:\Updates 
05.
>SET serverdir=\\130.30.2.21\buhralex\wpkg 
06.
07.
>FOR /F "delims= " %%l in ('dir /b "%localdir%\profiles.xml"') do set localsize=%%~zl 
08.
>FOR /F "delims= " %%s in ('dir /b "%serverdir%\profiles.xml"') do set serversize=%%~zs 
09.
>if %serversize% gtr %slocalsize%( 
10.
11.
>echo Bitte starten Sie das WPKG 
12.
>) 
13.
14.
>else ( 
15.
16.
>echo Keine neuen Updates. 
17.
>) 
18.
 
19.
Ausgabe: 
20.
 
21.
>H:\>Dateivergleich.bat 
22.
23.
>H:\>echo 
24.
>ECHO ist eingeschaltet (ON). 
25.
26.
>H:\>SET localdir=C:\Updates 
27.
28.
>H:\>SET serverdir=\\130.30.2.21\buhralex\wpkg 
29.
30.
>H:\>FOR /F "delims= " %l in ('dir /b "C:\Updates\profiles.xml"') do set localsiz 
31.
>e=%~zl 
32.
33.
>H:\>set localsize= 
34.
35.
>H:\>FOR /F "delims= " %s in ('dir /b "\\130.30.2.21\buhralex\wpkg\profiles.xml"' 
36.
>) do set serversize=%~zs 
37.
38.
>H:\>set serversize= 
39.
>"(" ist syntaktisch an dieser Stelle nicht verarbeitbar. 
40.
41.
>H:\>if  gtr (
Wo liegt jetzt das Problem??


[Edit Biber] Als < code > formatiert. [/Edit]
Bitte warten ..
Mitglied: Biber
12.09.2007 um 09:06 Uhr
Moin BKAMk2,

soweit ich es lesen kann..

--->Falsch : ...if %serversize% gtr %slocalsize%(

--->Richtiger: ...if %serversize% gtr %localsize% (

Bitte nutze beim Posten die <code>-Formatierung. Beispiel in Deinem letzten Kommentar.

Grüße
Biber

P.S. Anmerkung:
Statt: FOR /F "delims= " %%l in ('dir /b "%localdir%\profiles.xml"') do set localsize=%%~zl
Reicht: FOR %%l in ('"%localdir%\profiles.xml") do set localsize=%%~zl
Bitte warten ..
Mitglied: BKAMk2
12.09.2007 um 09:27 Uhr
Mach ich das nächste mal.

Wusste nicht wie^^

Hab deine Vorschläge befolgt hab aber immer noch den Fehler:

01.
H:\>set serversize= 
02.
"(" ist syntaktisch an dieser Stelle nicht verarbeitbar.
Bitte warten ..
Mitglied: Biber
12.09.2007 um 10:30 Uhr
Moin BKAMk2,

bitte poste doch noch mal die komplette Batchdatei in einem
01.
-Tag. 
02.
 
03.
Eventuell hast Du hier in miniversums Skizze: 
04.
<code> 
05.
if %localsize% gtr %serversize% ( 
06.
echo locale Datei ist groesser 
07.
) else ( 
08.
echo Datei auf Server ist groesser 
09.
)
... ein paar Leerzeilen
-oder-
eine der Dateien wird nicht gefunden und die %xxxsize%-Variable ist dadurch undefiniert.

In letzterem Fall würde ein Syntaxfehler auftreten, den Du vermeiden kannst durch:
---> if defined %localsize% if defined %serversize% if %localsize% gtr %serversize% ( ...

Sieht hässlich aus, erspart aber noch hässlichere Fehlermeldungen.

Grüße
Biber
Bitte warten ..
Mitglied: BKAMk2
12.09.2007 um 10:43 Uhr
habe alles nochmal auf leerzeilen untersucht.
Sind keine da.

Wenn ich den Befehl:

01.
In letzterem Fall würde ein Syntaxfehler auftreten, den Du vermeiden kannst durch: 
02.
---> if defined %localsize% if defined %serversize% if %localsize% gtr %serversize% ( ...
eingebe gibt er mir beide Echo's nacheinander aus.

Hier nochmal die Batch:

01.
echo 
02.
SET localdir=C:\Updates 
03.
SET serverdir=\\130.30.2.21\buhralex\wpkg 
04.
FOR %%l in ('"%localdir%\packages.xml") DO set localsize=%%~zl 
05.
FOR %%s in ('"%serverdir%\packages.xml") DO set serversize=%%~zs 
06.
if %localsize% gtr %serversize% ( 
07.
echo Bitte starten Sie das WPKG 
08.
) else ( 
09.
echo Keine neuen Updates 
10.
)

[Edit BKAMk2] Funktioniert jetzt. Hab die hochkommatra in den Zeilen:

01.
FOR %%l in ('"%localdir%\packages.xml") DO set localsize=%%~zl 
02.
FOR %%s in ('"%serverdir%\packages.xml") DO set serversize=%%~zs
rausgenommen.

Bin gerade dabei mit Javascript was zu schreiben damit dem User nachher eine Bildschirm Meldung ausgegeben werden kann.

Vielen Dank für eure Hilfe.

BKAMk2
Bitte warten ..
Mitglied: Biber
12.09.2007 um 17:52 Uhr
Moin BKAMk2,

sorry, tut mir Leid mit meinem mitge-Copy&Paste-ten einfachen Hochkomma.

Freut mich aber, dass Du es zum Fliegen gebracht hast.

Ich schließe mal diesen Beitrag, denn das eigentliche Anliegen scheint jetzt gelöst zu zu sein.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Batch zum Vergleichen der Firefox-Version (2)

Frage von patrick93 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

Linux
gelöst Vergleich zwischen Distributionen. Mögliche Kriterien? (18)

Frage von hansleitner zum Thema Linux ...

Entwicklung
Vergleichen und entfernen (2)

Frage von Florian456 zum Thema Entwicklung ...

Neue Wissensbeiträge
Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(1)

Information von DerWoWusste zum Thema Microsoft ...

Humor (lol)

Wohnt jemand in Belgien und kann nicht mehr ruhig ausschlafen?

(5)

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

Sicherheits-Tools

Trendmicro OSCE und das Fall Creators Update Win10 RS3

(3)

Information von Henere zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
Hosting & Housing
Mailserver Software Empfehlungen (21)

Frage von sunics zum Thema Hosting & Housing ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (16)

Frage von liquidbase zum Thema Voice over IP ...

TK-Netze & Geräte
TK-Anlage VoIP - DECT Erweiterung (15)

Frage von Lynkon zum Thema TK-Netze & Geräte ...