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

If kaskade in Batch

Frage Entwicklung Batch & Shell

Mitglied: Tolwyn

Tolwyn (Level 1) - Jetzt verbinden

27.08.2008, aktualisiert 22:58 Uhr, 4076 Aufrufe, 5 Kommentare

Hallo

ich schreibe vielleicht erstmal was ich überhaupt machen will, eventuell gibt es dafür ja auch eine bessere lösung und dann mein eigentliches problem:

Ich habe zwei Ordner mit mehr oder weniger dem gleichen Inhalt (gleiche Dateinamen). Die Dateigrößen unterscheiden sich aber.
Es kann dabei sein, dass in Ordner A (fiktive "Quelle") die größere der beiden Dateien ist oder in Ordner B (fiktives "Ziel").

Alle Dateien sollen kopiert werden, aber wenn in der Quelle eine Datei eine geringere oder gleiche Größe ( <= ) hat als im Zielordner, soll sie nicht kopiert werden.

Meine Idee war mit einer FOR-Schleife eine Liste des Quellordners zu erstellen, Größe und Name der Datei zu speichern und dann mit der Datei im Zielordner zu vergleichen.

Logdatei aufbau: (eine Dir ausgabe)
01.
25.08.2008  12:08               295 textdatei_auslesen.bat
Die Batchdatei:
01.
@ECHO ON 
02.
 
03.
for /F "tokens=3* delims= " %%I in (F:\log.txt) DO ( 
04.
 
05.
::noch nicht verwendet; evtl für verwendung außerhalb der schleife 
06.
Set groesse =%%I 
07.
Set name =%%J 
08.
 
09.
	IF EXIST F:\test2\%%J (	ECHO Datei existiert bereits )	ELSE (Copy "F:\test\%%J" "F:\test2\")	 
10.
	 
11.
)
Jetzt wollte ich bei dem IF eigentlich dazu übergehen eine IF-Kaskade zu machen, wie in Java:
01.
if(//existiert datei?)  
02.
03.
  if( //ist quelldatei größer als zieldatei?) 
04.
05.
     if(//ist quelldatei um mindestens 2MB größer?)  
06.
07.
       etc etc etc... 
08.
09.
10.
   else  
11.
12.
13.
}

So hab ichs mal probiert:

IF EXIST F:\test2\%%J ( IF "F:\test2\%~zJ" GTR %%I (ECHO Datei existiert) ELSE (Copy "F:\test\%%J" "F:\test2\"))

Wie würde das richtig gehen?
Das IF und ELSE kann man ja auch nicht auf mehrere Zeilen verteilen?

Gruß

Tolwyn
Mitglied: miniversum
27.08.2008 um 13:55 Uhr
Das IF und ELSE kann man ja auch nicht auf mehrere Zeilen verteilen?
Doch das geht:
01.
IF EXIST F:\test2\%%J ( 
02.
  IF "F:\test2\%~zJ" GTR %%I ( 
03.
    ECHO Datei existiert 
04.
  ) ELSE ( 
05.
    Copy "F:\test\%%J" "F:\test2\" 
06.
07.
)
Wenn du allerdings sowieso mit %~zJ arbeitest müstest du die temponääre logdatei ncith umbedingt anlegen.
Das geht dann auch so:
01.
FOR /F "delims=" %%J in ('dir /b "F:\test\*.*"') do ( 
02.
  IF EXIST F:\test2\%%J ( 
03.
    FOR /F "delims=" %%I in ('dir /b "F:\test2\%%~nxI"') do ( 
04.
      IF "F:\test2\%%~zJ" GTR %%~zI ( 
05.
        ECHO Datei existiert 
06.
      ) ELSE ( 
07.
        Copy "F:\test\%%J" "F:\test2\" 
08.
09.
10.
11.
)
Bitte warten ..
Mitglied: bastla
27.08.2008 um 14:27 Uhr
... und mit analoger Vorgangsweise, aber Verwendung eines Schalters:
01.
@echo off & setlocal 
02.
set "Quelle=F:\test" 
03.
set "Ziel=F:\test2" 
04.
 
05.
for %%i in ("%Quelle%\*.*") do ( 
06.
    set DoIt= 
07.
    if not exist "%Ziel%\%%~nxi" ( 
08.
        set Doit=true 
09.
    ) else ( 
10.
        for %%j in ("%Ziel%\%%~nxi") do if %%~zi gtr %%~zj set Doit=true 
11.
12.
    If defined DoIt copy "%%i" "%Ziel%\">nul && echo %%~nxi 
13.
)
Grüße
bastla
Bitte warten ..
Mitglied: miniversum
27.08.2008 um 14:40 Uhr
Ich bin mir nicht sicher ob das so funktioniert.
Werden variabeln die in Klammern (von der For-Schleife) gesetzt werden nicht erst danach aufgelöst?
das if defined DoIt würd da doch dan garnicht funktionieren, oder liege ich jetzt falsch?
Bitte warten ..
Mitglied: bastla
27.08.2008 um 16:48 Uhr
@miniversum

... oder liege ich jetzt falsch?
Ja.

Grüße
bastla
Bitte warten ..
Mitglied: Tolwyn
27.08.2008 um 22:58 Uhr
hi

danke für eure Lösungen.
Hat soweit ganz gut funktioniert.

Die Frage ist damit erstmal gelöst.

Gruß

Tolwyn
Bitte warten ..
Ähnliche Inhalte
Router & Routing
gelöst Suche guten Router für Router-Kaskaden (15)

Frage von McLion zum Thema Router & Routing ...

Router & Routing
gelöst Routingproblem in Homerouter-Kaskade mit Raspi (25)

Frage von Oldschool zum Thema Router & Routing ...

Router & Routing
Digitalisierungsbox Smart L2TP IPSEC weiterleiten in Router-Kaskade (2)

Frage von icke2003 zum Thema Router & Routing ...

Batch & Shell
gelöst Batch und Powershell (2)

Frage von michi-ffm zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Internet
gelöst Jeden morgen Internet-Probleme (56)

Frage von pjrtvly zum Thema Internet ...

Server-Hardware
HP DL380 G7: Booten vom USB via USB 3.1-PCI-e Karte möglich? (24)

Frage von Paderman zum Thema Server-Hardware ...

LAN, WAN, Wireless
gelöst IP Adressen - Modem - Switch - Accesspoint (22)

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

Windows 7
Bluesreens unternehmensweit (22)

Frage von SYS64738 zum Thema Windows 7 ...