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

Vergleichen von Dateigrößen per Batch

Frage Entwicklung Batch & Shell

Mitglied: BKAMk2

BKAMk2 (Level 1) - Jetzt verbinden

11.09.2007, aktualisiert 12.09.2007, 4870 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 EQU - GLEICH - BATCH (8)

Frage von freshman2017 zum Thema Batch & Shell ...

Batch & Shell
gelöst Windows 10 Batch für Datum und Uhrzeit setzen (18)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (33)

Frage von sabines zum Thema Internet ...

Netzwerke
Wie erstelle ich ein Intranet (19)

Frage von Leonardnet zum Thema Netzwerke ...

LAN, WAN, Wireless
gelöst Eintägige Netzwerkunterbrechung trotz Backupleitung (15)

Frage von iAmbricksta zum Thema LAN, WAN, Wireless ...

Netzwerke
VPN-Server einrichten PPTPD-Einrichtung gescheitert (14)

Frage von MIlexx zum Thema Netzwerke ...