Top-Themen

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

Batch Datei die nur Daten ab bestimmter Grösse kopiert.

Frage Entwicklung Batch & Shell

Mitglied: bastler2000

bastler2000 (Level 1) - Jetzt verbinden

01.02.2011, aktualisiert 15:57 Uhr, 7680 Aufrufe, 14 Kommentare

Hallo an alle Forumnutzer.
Ich komme mal direkt zur Sache.
Habe Probleme bei meiner Batch Datei ( bin noch Anfänger). Es soll später unter windows 7 laufen.

Also, die Batch Datei kopiert *.doc und *.txt Dateien in einen Backupordner, das klappt auch alles ganz gut.
Jedoch bräuchte ich einen Filter der nur Dateien ab einer bestimmten Dateigrösse kopiert,
z.B: ab 100kb kopiert der und kleinere lässt der liegen.
hoffe meine Beschreibung ist verständlich bin ja noch nicht so im Thema, wobei nach der Googelei müsste schon was hängen geblieben sein ;).
Hier mein Code:
@echo off
xcopy "C:\*.txt" %~d0\backup_a /s/c/q/r/h
xcopy "D:\*.doc" %~d0\backup_b /s/c/q/r/h
@cls
@ExIT

habe nach div. Suche folgende Ansätze gefunden. kann jedoch leider keine Verbindung aufbauen, ging meistens ums löschen von temp Dateien.
anbei die Ansätze:

1.)

@echo off & setlocal
set "List=D:\Log.txt"
set "Size=80000"
if exist "%List%" del "%List%"
for %%i in (*.jpg) do if %%~zi geq %Size% echo %%i>>"%List%"

2.)
if ($filename = 'clicks.txt'){
echo $filename . ': ' . filesize($filename) . '0';
copy("sicherungclicks.txt","clicks.txt");
}
?>

Wenn Jemand einen Tip hat wäre das total toll.
Danke
MfG
Mitglied: bastla
01.02.2011 um 16:02 Uhr
Hallo bastler2000 und willkommen im Forum!

Die Version 1 müsstest Du (ungetestet) etwa so abwandeln:
01.
@echo off & setlocal 
02.
set "Size=80000" 
03.
 
04.
for /f "delims=" %%i in ('dir /s /b D:\*.txt') do if %%~zi geq %Size% xcopy "%%i" "%~d0\backup_a%%~pnxi*" /cqrh 
05.
for /f "delims=" %%i in ('dir /s /b D:\*.doc') do if %%~zi geq %Size% xcopy "%%i" "%~d0\backup_b%%~pnxi*" /cqrh
[Edit2] Als Ergänzung (und immer noch ungetestet ): Soferne nur relative Pfade "mitgenommen" werden sollen, etwa so:
01.
@echo off & setlocal 
02.
set "Basis=D:\Test" 
03.
set "Size=80000" 
04.
 
05.
for /f "delims=" %%i in ('dir /s /b "%Basis%\*.txt"') do if %%~zi geq %Size% call :ProcessFile "%%i" "%~d0\backup_a" 
06.
for /f "delims=" %%i in ('dir /s /b "%Basis%\*.doc"') do if %%~zi geq %Size% call :ProcessFile "%%i" "%~d0\backup_b" 
07.
goto :eof 
08.
 
09.
:ProcessFile 
10.
set "Quellpfad=%~f1" 
11.
call set "RelPfad=%%Quellpfad:%Basis%=%% 
12.
xcopy %1 "%~2%RelPfad%*" /cqrh 
13.
goto :eof
[/Edit2]

Grüße
bastla

[Edit] Hatte übersehen, dass in unterschiedliche Zielordner kopiert und wohl auch der Pfad übernommen werden soll [/Edit]
Bitte warten ..
Mitglied: Snowman25
01.02.2011 um 17:19 Uhr
Hallo bastler2000,

Kennst du Robocopy?
Ab Vista ist es standardmäßig installiert. Bei Robocopy gibt es einen Switch namens /MIN:n. Dieser schließt von einem Kopiervorgang alles aus, was kleiner als deine angegebene Größe ist!

Zitat von robocopy
/MIN:n :: Minimale Dateigröße - schließt Dateien aus, die kleiner als n Bytes sind.

Gruß
Snow
Bitte warten ..
Mitglied: bastler2000
01.02.2011 um 17:43 Uhr
Vielen Dank für die schnelle Antwort. Werde das heute abend mal testen. melde mich dann obs geklappt hat.
Bitte warten ..
Mitglied: bastla
01.02.2011 um 21:31 Uhr
[OT] @snow
Spielverderber ...

Grüße
bastla
[/OT]
Bitte warten ..
Mitglied: bastler2000
02.02.2011 um 16:00 Uhr
Hi wieder da .
@ bastla
habe den code etwas abgewandelt verwendet, jedoch habe ich leider festellen müssen, dass das Kopieren damit sehr viel länger dauert und er trotzdem alles kopiert.
Zum Testen habe ich 2 Ordner erstellt und der soll von A-B kopieren mit dem besagten Filter. ( um die Methode zu verstehen).
Hast du evtl Lust für dieses Beispiel einen Einfachen Beispielcode zu schreiben.

Hatte nun mit einer \Exclude *.txt gearbeitet, ist nur nicht so optimal. Würde mich interessiern wie das Andere klappt ;)


@ snowman
habe leider noch PC´s mit Winxp im Haushalt
Bitte warten ..
Mitglied: bastla
02.02.2011 um 17:00 Uhr
Hallo bastler2000!

Leider kann ich Dir nicht so ganz folgen ...

Der einfache Beispielcode für das Kopieren von *.txt-Dateien und *.doc-Dateien mit einer Größe von mindestens 80.000 Bytes steht oben, und damit werden auch nicht alle, sondern nur die entsprechenden Dateien kopiert. Wenn Du das für die Ordner A und B benötigst, solltest Du (im zweiten Ansatz) die Zeilen 2 sowie 5 und 6 anpassen ...

Das das Kopieren bei Überprüfung jeder einzelnen Dateigröße durch einen Batch vergleichsweise langsam ist, kannst Du nur durch Verwendung eines effizienteren Werkzeuges ändern - zB, indem Du Dir "robocopy" besorgst (gibt's auch für XP und als Download bei Microsoft) ...

Grüße
bastla
Bitte warten ..
Mitglied: bastler2000
03.02.2011 um 23:03 Uhr
Hi vielen Dank für die Mühe und den super Code, habe diesen zuvor falsch angepasst, dadurch ist der sehr langsam geworden und hat nicht richtig gefiltert.
Habe den fehler gefunden und siehe da: das Filtern klappt vorzüglich.
Der Code wurde dann von mir geändert damit er aus 2 verschiedenen Ordnern die Daten sucht, anhand der Grösse filtert und dann in einem gemeinsamen Ordner kopiert.
Leider klappt das mit dem Filtern nur für Ordner a, bei Ordner b kopiert der einfach alles. Ich weiss nicht sorecht wo der Fehler ist.
Anbei der Code:

@echo off & setlocal

set "Basis_a=C:\Users\Meister\Desktop\a"
set "Basis_b=C:\Users\Meister\Desktop\b"
set "Size=80000"

for /f "delims=" %%i in ('dir /s /b "%Basis_a%\*.doc"') do if %%~zi geq %Size% call :ProcessFile_a "%%i" "%~d0\backup_ab"
for /f "delims=" %%i in ('dir /s /b "%Basis_b%\*.txt"') do if %%~zi geq %Size% call :ProcessFile_b "%%i" "%~d0\backup_ab"

goto :eof

:ProcessFile_a
set "Quellpfad=%~f1"
call set "RelPfad=%%Quellpfad:%Basis_a%=%%

xcopy %1 "%~2%RelPfad%*" /cqrh
goto :eof

:ProcessFile_b
set "Quellpfad=%~f1"
call set "RelPfad=%%Quellpfad:%Basis_b%=%%

xcopy %1 "%~2%RelPfad%*" /cqrh
goto :eof
Bitte warten ..
Mitglied: bastla
03.02.2011 um 23:38 Uhr
Hallo bastler2000!

Abgesehen davon, dass in meinem Ansatz oben noch ein Anführungszeichen gefehlt hat, sollte es bei praktischen identischen Codeteilen "alles oder nix" heißen - mit der folgenden Variante dann hoffentlich "alles" :
01.
@echo off & setlocal 
02.
 
03.
set "Basis_a=C:\Users\Meister\Desktop\a" 
04.
set "Basis_b=C:\Users\Meister\Desktop\b" 
05.
set "Size=80000" 
06.
 
07.
for /f "delims=" %%i in ('dir /s /b "%Basis_a%\*.doc"') do if %%~zi geq %Size% call :ProcessFile "%%i" "%~d0\backup_ab" "%Basis_a%" 
08.
for /f "delims=" %%i in ('dir /s /b "%Basis_b%\*.txt"') do if %%~zi geq %Size% call :ProcessFile "%%i" "%~d0\backup_ab" "%Basis_b%" 
09.
 
10.
goto :eof 
11.
 
12.
:ProcessFile 
13.
set "Quellpfad=%~f1" 
14.
call set "RelPfad=%%Quellpfad:%~3=%%" 
15.
 
16.
xcopy %1 "%~2%RelPfad%*" /cqrh >nul 
17.
goto :eof
Da die Ermittlung des relativen Pfades und das Kopieren ja nach dem selben Schema erfolgen, sollte ein Unterprogramm (dem die erforderlichen Parameter - als %1 bis %3 - übergeben werden) eigentlich genügen ...

Grüße
bastla

P.S.: Code als Code formatiert zu posten ist übrigens gar nicht schwer ...
Bitte warten ..
Mitglied: bastler2000
04.02.2011 um 00:12 Uhr
Hallo Danke für die schnelle Antwort.
habe den Code getestet. Jedoch wird nur der Inhalt des Ordners a gefiltert der Inhalt des Ordner b wird komplett kopiert.
Habe mir in Ordner a und b verschieden grosse Dateien gelegt um die Funktion zu testen.
Habe mich schon gefragt wie alle den Code so schön formatiert ins Forum stellen können.
grüsse
Bitte warten ..
Mitglied: bastla
04.02.2011 um 00:18 Uhr
Hallo bastler2000!

Sorry - ich habe den Code vor dem Posten getestet und er macht bei mir, was er soll ...

Grüße
bastla
Bitte warten ..
Mitglied: bastler2000
04.02.2011 um 00:35 Uhr
Hi ,
Ich fühle mich wie auf wolke 7. Sitze schon fast den halben Tag daran und jetzt geht es: tja Dicker kopf und ne menge byte, bit, kilobit, kilobyte..... hatte den Filterwert zu niedrig gewählt und die Dateien im Ordner b zu hoch ;).
01.
Vielen Vielen Dank bastla 
02.
Jetzt kann ich endlich schlafen gehen.
Bitte warten ..
Mitglied: bastler2000
04.02.2011 um 01:34 Uhr
Tja immernoch an der Kiste.
Was müsste ich denn in Zeile 12-16 ändern wenn ich 3 Quellen anstatt 2 wählen würde?
lg
Bitte warten ..
Mitglied: bastla
04.02.2011 um 08:02 Uhr
Hallo bastler2000!
Was müsste ich denn in Zeile 12-16 ändern wenn ich 3 Quellen anstatt 2 wählen würde?
Die gute Nachricht zum Tage: gar nix (es werden ja alle relevanten Informationen - zu kopierende Datei, Zielpfad und (Quell-)Basispfad - beim Aufruf des Unterprogramms übergeben ...)

Grüße
bastla
Bitte warten ..
Mitglied: bastler2000
04.02.2011 um 17:35 Uhr
Hallo bastla,
habe gerade nach dem Muster von Zeile 7/8 neue ordner erstellt klapp!
Danke
Bitte warten ..
Ähnliche Inhalte
Microsoft
Über VPN nur bestimmt große Daten übertragen
gelöst Frage von Peter007Microsoft5 Kommentare

Hallo zusammen, gibt es eine Möglichkeit bei Außendienstmitarbeitern die über VPN angebunden sind, die übertragbare Datenmenge zum Fileserver über ...

Batch & Shell
Kopierte Dateien per Batch vergleichen
Frage von dobym24Batch & Shell7 Kommentare

Hallo zusammen, ich habe folgendes Problem und mittlerweile Tage im Internet verbracht um eine Lösung zu findenLeider erfolglos Ich ...

Batch & Shell
Batch kopiert immer wieder die gleichen Dateien
gelöst Frage von nobbi49Batch & Shell1 Kommentar

Hallo Freunde ich habe eine Batchdatei zum Sichern von Daten erstellt. xcopy A:\ B:\ /D /E /C /Y /I ...

Batch & Shell
Batch zum suchen bestimmter Dateien
gelöst Frage von FurycanBatch & Shell2 Kommentare

Hallo zusammen, ich hoffe man kann mir hier helfen. Ich Suche ein Script das mir folgendes macht: In einem ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 105 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
Frage von HelloWorldBatch & Shell16 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

Windows Server
Ping auf einen bestimmten Server nicht möglich
gelöst Frage von a.thierWindows Server7 Kommentare

Hallo, ich habe folgendes Problem. srv-dc1: Ping srv-nav > geht Ping srv-exchange > geht nicht srv-exchange: Ping srv-dc1 > ...

Hardware
Fujitsu Workstation mit K80 und Quadro P5000, Fehlermeldung: Connect Power Adapter
Frage von MachelloHardware7 Kommentare

Hallo Zusammen, ich benötige euren Rat da ich ratlos bin. Folgende Konfiguration im Büro: Fujitsu Workstation Celcius R940 Power ...