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

Per Autostart unter XP - Zufallsdateien (jpg-Bilder aus verschiedenen Unterordnern) von Laufwerk C nach D kopieren

Frage Entwicklung Batch & Shell

Mitglied: leertaste

leertaste (Level 1) - Jetzt verbinden

11.10.2007, aktualisiert 12.10.2007, 4453 Aufrufe, 5 Kommentare

Hallo Forumsleute

Hoff' mal das ich für diese Frage hier im richtigen Forumsbereich gelandet bin ;)

Ich suche ein Programm, natürlich möglichst Freeware :D das in den 'Autostart-Ordner' unter XP kommt...


...möchte per Zufall Dateien (jpg-Bilder aus verschiedenen Unterordnern) von Laufwerk C nach D kopieren. Wobei das Laufwerk D eine Ramdisk ist und ich die Dateien auf eine bestimmte Anzahl oder Megabytemenge begrenzen möchte.

Gibt es da ein Tool/Utility mit dem sich das bewerkstelligen lässt? Ich habe geGOOGLEd aber leider nichts brauchbares gefunden


FreundlichFragenderGruss
von der Leertaste
Mitglied: bastla
11.10.2007 um 20:51 Uhr
Hallo leertaste!

Wenn es auch ein Batch sein dürfte, könntest Du es so versuchen:
01.
@echo off & setlocal 
02.
set "Quelle=C:\Bilder" 
03.
set "Typ=*.jpg" 
04.
set "Ziel=D:" 
05.
set /a Grenze=5000000 
06.
 
07.
set /a Bytes=0 
08.
set Done= 
09.
for /f %%i in ('dir "%Quelle%\%Typ%"^|findstr "Datei(en)"') do set /a Anzahl=%%i 
10.
 
11.
:Loop 
12.
set /a Nr=%random%*%Anzahl%/32768+1 
13.
for /f "tokens=1* delims=:" %%i in ('dir /b "%Quelle%\%Typ%"^|findstr /n .^|findstr /b "%Nr%"') do call :ProcessFile "%Quelle%\%%j" 
14.
if not defined Done goto :Loop 
15.
goto :eof 
16.
 
17.
:ProcessFile 
18.
if exist "%Ziel%\%~nx1" goto :eof 
19.
set /a Bytes+=%~z1 
20.
if %Bytes% lss %Grenze% ( 
21.
	copy %1 "%Ziel%" >nul 
22.
) else ( 
23.
	set Done=True 
24.
)
Im dargestellten Beispiel werden jpg-Bilder aus dem Ordner "C:\Bilder" nach "D:\" kopiert - bitte bei den Pfadangaben keinen "\" an das Ende setzen (daher nur "D:").

Anmerkung: Für das Kopieren gilt eine Speicherplatz-Obergrenze (im Beispiel 5.000.000 Bytes), aber keine -Untergrenze.

Das bedeutet: Es werden solange Bilder kopiert, bis mit dem nächsten zu kopierenden Bild die Grenze (in Bytes angegeben) überschritten würde - Beispiel: Wenn bereits Bilder mit einer Gesamtgröße von 4.620.000 Bytes kopiert wurden, wird ein weiteres Bild mit 500.000 Bytes nicht mehr kopiert, während ein solches mit 300.000 Bytes noch unter die Grenze passt und daher noch kopiert würde. Damit wird sicher gestellt, dass die angegebene Kapazität keinesfalls überschritten wird. Dennoch sollte noch eine Reserve eingeplant werden, da der tatsächliche Platzbedarf einer Datei höher ist als ihre exakte Größe in Bytes.

Bitte auch zu beachten: Wenn die Grenze zu hoch angesetzt wird (also die Größe aller Bilder zusammen den Grenzwert nicht überschreitet), läuft der Batch in eine Endlosschleife.

Grüße
bastla
Bitte warten ..
Mitglied: leertaste
11.10.2007 um 22:23 Uhr
Hallo bastla und alle anderen Mitleser

Es darf auch ein Batch sein Aber ich hätte auch gerne (diverse) UnterOrdner mit einbezogen, wenn das nicht geht... ...na dann müsste ich eine Vorauswahl in einen Ordner kopieren und dann per zufall einen Teil der Bilder mit'te Batch in'ne RamDisk (Laufwerk D) kopieren. Unterordner wäre wie gesagt schön, aber zur Not kann/werde/muss ich mir dann anders behelfen... ...ansonsten ist diese kleine Routine schon echt SPITZE !!!

Wenn in der obigen Routine was "schief läuft" (z.B. zu wenig Bilder in einem Verzeichnis) läuft sie echt endloooos könnte man nicht der kompletten Routine "sagen" - laufe nur 10x, 20x oder wie oft auch immer(?) durch und beende dich dann selbst...


Freundlicher"Vordankes"Gruss
von der Leertaste
Bitte warten ..
Mitglied: bastla
11.10.2007 um 23:02 Uhr
Hallo leertaste!

Aber ich hätte auch gerne (diverse) UnterOrdner mit einbezogen
Da hatte ich einfach drübergelesen ...

laufe nur 10x, 20x oder wie oft auch immer(?) durch und beende dich dann selbst...
Eine solche Festlegung würde darauf hinauslaufen, dass (je nachdem, was früher eintritt), bei max 10, 20 oder "wieviel auch immer" Bildern oder beim Erreichen der Speichergrenze Schluss ist.

Die folgende Version sollte höchstens 20 Bilder (auch aus Unterordnern) kopieren:
01.
@echo off & setlocal 
02.
set "Quelle=C:\Bilder" 
03.
set "Typ=*.jpg" 
04.
set "Ziel=D:" 
05.
set /a Grenze=5000000 
06.
set /a Max=20 
07.
 
08.
set /a Bytes=0 
09.
set Done= 
10.
for /f %%i in ('dir /s "%Quelle%\%Typ%"^|findstr "Datei(en)"') do set /a Anzahl=%%i 
11.
 
12.
:Loop 
13.
set /a Nr=%random%*%Anzahl%/32768+1 
14.
for /f "tokens=1* delims=[]" %%i in ('dir /s /b "%Quelle%\%Typ%"^|find /v /n "::"^|find "[%Nr%]"') do call :ProcessFile "%%j" 
15.
if %Max% lss 1 goto :eof 
16.
if not defined Done goto :Loop 
17.
goto :eof 
18.
 
19.
:ProcessFile 
20.
set /a Max-=1 
21.
if exist "%Ziel%\%~nx1" goto :eof 
22.
set /a Bytes+=%~z1 
23.
if %Bytes% lss %Grenze% ( 
24.
	copy %1 "%Ziel%" >nul 
25.
) else ( 
26.
	set Done=True 
27.
)
Anmerkung: Da auch "Fehlversuche" (wenn das Bild bereits in einem früheren Durchlauf kopiert wurde) mitgezählt werden, wird zumeist die angegebene Maximalanzahl nicht erreicht werden - daher also vielleicht etwas höher ansetzen (oder zB gleich auf 200, um tatsächlich nur der Gefahr einer Endlosschleife vorzubeugen).

Grüße
bastla

[Edit] Zweite "for"-Zeile gekürzt. [/Edit]
Bitte warten ..
Mitglied: bastla
11.10.2007 um 23:28 Uhr
... und um den Ablauf vielleicht ein wenig zu beschleunigen, noch eine Variante mit Verwendung einer Temporärdatei für die Bilderliste:
01.
@echo off & setlocal 
02.
set "Quelle=C:\Bilder" 
03.
set "Typ=*.jpg" 
04.
set "Ziel=D:" 
05.
set /a Grenze=5000000 
06.
set /a Max=20 
07.
 
08.
set "Liste=%Temp%\Bilderliste.txt" 
09.
set /a Bytes=0 
10.
set Done= 
11.
for /f %%i in ('dir /s "%Quelle%\%Typ%"^|findstr "Datei(en)"') do set /a Anzahl=%%i 
12.
dir /s /b "%Quelle%\%Typ%"|find /v /n "::">"%Liste%" 
13.
 
14.
:Loop 
15.
set /a Nr=%random%*%Anzahl%/32768+1 
16.
for /f "tokens=1* delims=[]" %%i in ('find "[%Nr%]"^<"%Liste%"') do call :ProcessFile "%%j" 
17.
if %Max% lss 1 goto :eof 
18.
if not defined Done goto :Loop 
19.
goto :eof 
20.
 
21.
:ProcessFile 
22.
set /a Max-=1 
23.
if exist "%Ziel%\%~nx1" goto :eof 
24.
set /a Bytes+=%~z1 
25.
if %Bytes% lss %Grenze% ( 
26.
	copy %1 "%Ziel%" >nul 
27.
) else ( 
28.
	set Done=True 
29.
)
Grüße
bastla
Bitte warten ..
Mitglied: leertaste
12.10.2007 um 00:39 Uhr
Ich wollt' mal gaaaaanz dringend etwas loswerden...

.

..

...

....

.....

......

.......

......

.....

....

...

..

.

Daaaaaaaaaaaaaaaaaaanke, es läuft SUPER KLASSE - Lokal auf der Platte oder via Netzwerk.
Einfach mal wieder coole Batchbastladateien


NiceBatchGruss
von MarCus mit ZEH


Ps.: Wo kann mich eigentlich so einen genialen 'BatchUmsetzungkopf' kaufen
Bitte warten ..
Ähnliche Inhalte
Microsoft
Selbst installierte Programme auf C oder D?
gelöst Frage von honeybeeMicrosoft7 Kommentare

Hallo, ich habe eine SSD (Laufwerk C) und eine HDD (Laufwerk D) auf meinem Notebook. Wohin würdet ihr an ...

Backup
Mit cmd nur Unterordner und dessen Inhalt kopieren
gelöst Frage von red-edBackup5 Kommentare

Guten Tag, ich bin schon öfters auf eurer Seite fündig geworden, nun habe ich aber ein Problem das bestimmt ...

Visual Studio
DataGridView mit verschiedenen Bildern in den Zeilen
gelöst Frage von Aicher1998Visual Studio3 Kommentare

Hi, ich hab mal wieder ein Problem: Ich möchte eine DataGridView erstellen, in der ich Bilder einbauen kann. Ich ...

Batch & Shell
Robocopy soll nur spezielle Unterordner kopieren
Frage von PoldiMUCBatch & Shell2 Kommentare

Guten Abend, ich möchte mit Robocopy nur spezielle Ordner einer Ordnerstruktur incl. der übergeordneten Ordnerstruktur kopieren (siehe Bild 1 ...

Neue Wissensbeiträge
Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 3 StundenPerl2 Kommentare

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 4 StundenSicherheit

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

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

Tipp von kgborn vor 2 TagenWindows 1010 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 2 TagenSicherheits-Tools

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

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

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

Netzwerkgrundlagen
Belibiges Teilnetz einer Subnetzmaske rausfinden?
gelöst Frage von CenuzeNetzwerkgrundlagen17 Kommentare

Wundervollen Gutentag, mittlerweile kann ich Subnetting so einigermaßen, aber ein Problem habe ich noch. Netzwerkadresse und Boradcast errechnen ist ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless12 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Windows Server
Logging von "gesendeten Nachrichten" auf Terminalservern
gelöst Frage von Z3R0C0MM4N0THiN6Windows Server10 Kommentare

Hallo zusammen, kann mir jemand auf kurzem Wege sagen ob 1) die per Task-Manager (oder damals tsadmin) an Benutzer ...