Wie am einfachsten 1000nde Dummy-Dateien (0 byte) erstellen?

Dirck

chronische Wohlfühlitis
Wie könnte man am einfachsten 1000nde von Dummy-Dateien (0 byte) mit bliebigem Namen und beliebiger Erweiterung erstellen?
 
  1. Neuen Ordner erstellen
  2. Eine leere Datei erstellen.
  3. Strg gedrückt halten.
  4. Nacheinander A -> C -> V drücken

Punkt 4 beliebig oft wiederholen.
Ich würds nicht übertreiben, denn es verdoppeln sich jeweils alle Dateien in diesem Ordner.
 
Vielen Dank SoKoBaN.

An so etwas hatte ich auch gedacht, dachte, es wäre nicht so effektiv, aber nun, da ich es probiert habe, sehe ich, daß es doch recht einfach und schnell geht, wußte nicht, daß die jeweils kopierten Dateien beim Einfügen automatisch umbenannt werden.

Umbenennen - hatte ich vergessen zu erwähnen - mit den Namen und Erweiterungen, die ich brauche, kann ich die Dateien wohl am besten mit einem "Renamer" oder gibt es da eine andere Möglichkeit, diese Dateien mit den Namen und Erweiterungen von denen in einem anderen Ordner zu versehen, so daß die neuen Dateien alle jeweils Namen und Erweiterung der vorhandenen original Dateien in einem bestimmten Ordner haben, also sozusagen die Duplikate ohne Inhalt wären?
 
Hallo!
Das geht am einfachsten mit ROBOCOPY mit der Option /create
Dafür öffnest Du mit Start --> Ausführen --> cmd die Kommandozeile und führst den robocopy Befehl dort aus.
Hast Du zum Beispiel im Verzeichnis c:\test 25 Dateien unterschiedlichsten Inhaltes und mit verschiedenen Dateiendungen hast, dann wird im Zielverzeichnis die Dateistruktur mit der Dateilänge NULL erstellt.
zB: robocopy c:\test d:\test2 /create
Das Zielverzeichnis muss nicht existieren, wird automatisch angelegt. Die Angabe *.* kannst Du weglassen, ist Standard bei robocopy, kannst aber natürlich auch nur bestimmte Dateiendungen so kopieren ( robocopy /? zeigt Dir verschieden Möglichkeiten, wie Du Optionen angeben kannst)
HTH, Jürgen
 
Dankesehr Jürgen,

ich habe es mal hiermit versucht: robocopy i:\test i:\test2 /create

Hat nicht funktioniert, es kommt die Meldung "Der Befehl ist entweder falsch geschrieben oder konnte nicht gefunden werden"; muß die Eingabeaufforderung auf einer bestimmten Ordnerebene stehen, damit der Befehl ausgeführt werden kann?
 
Welche Version von Windows hast Du? Win7 hat es von Haus aus mit an Bord. Der Befehl passt so und es ist egal, auf welcher Verzeichnisebene Du bist. Schaut mir eher aus, als ob Dein Windows nicht mit robocopy "ausgerüstet" ist. Überprüfs mal mit dem Befehl: robocopy /? Kommt jetzt immer noch eine Fehlermeldung, dann hast Du definitiv kein robocopy in Deinem Windows. Kann aber sehr leicht nachgerüstet werden. Einfach unter Download: Windows Server 2003 Resource Kit Tools - Microsoft Download Center - Download Details die Ressource Kit Tools von MS downloaden und nach \windows\system32 kopieren.
HTH, Jürgen
 
Habe Windows 7, 64 bit Home Premium Home Edition.

Habe robocopy /? eingegeben, keine Fehlermeldung, ist also vorhanden.

Ah, habe es gerade noch einmal probiert, dieses Mal mit großen Laufwerksbuchstaben, obwohl meine klein angezeigt werden, nun hat es funktioniert, super, habe nun sofort - jedenfalls bei diesem Test, hoffe, es funktioniert nachher auch mit anderen Dateierweiterungen und Sonderzeichen und so - 0-byte-Dummies.

Überhaupt erstaunlich, daß es so ein Programm, noch dazu bei Windows mitgeliefert, gibt.

Vielen Dank Jürgen.
 
Überhaupt erstaunlich, daß es so ein Programm, noch dazu bei Windows mitgeliefert, gibt.
Für mich ist es eher erstaunlich, dass überhaupt Programme entwickelt werden, die nur solche im System schon vorhandene Funktionen ersetzen, wie eine davon der Tipp von SoKoBaN so schön zeigt, und das oft halt nur hübsch bunt aufgepeppt (30 Kilobyte für die Funktion und 3 Megabyte für die Bildchen :ROFLMAO:). Ok, in diesem Fall ist es nur eine Unterfunktion von Robocopy, die ich bei so einem Tool sicher auch mit eingebaut hätte, um möglichst alles abzudecken. Manch andere Tools bieten aber tatsächlich nichts Neues, da kenne ich noch viele davon. Dennoch ist der einzige Vorteil von Robocopy gegenüber dem in Windows vorhandenem xcopy nur die automatische Backup-Funktionalität.

WinTotal schrieb:
Vorteile von Robocopy gegenüber copy und xcopy

Viele Anwender werden sich nun fragen: Wozu brauche ich Robocopy? Ich habe doch copy und xcopy. Diese zwei Tools sind zwar für viele alltägliche Kopiervorgänge die richtigen, wenn es jedoch darum geht, ein inkrementelles Backup anzulegen, versagen beide. Copy kann nur Inhalte der obersten Ebene kopieren und berücksichtigt Unterordner überhaupt nicht. Xcopy kann mit dem Parameter /s zwar auch Unterordner und deren Dateien berücksichtigen, jedoch keine inkrementelle Kopie anfertigen. So dauert ein Kopiervorgang, der mehrere GB an Daten beinhaltet, immer sehr lange, da grundsätzlich alle Dateien erneut kopiert werden. Außerdem werden keinerlei Dateien im Archivordner gelöscht, auch wenn sie im Quellordner nicht mehr vorhanden sind. Hier kommt Robocopy ins Spiel. Robocopy berücksichtigt neue, geänderte und auch gelöschte Dateien. Dabei ist jedoch Vorsicht geboten. Wenn Sie im Quellordner versehentlich eine Datei gelöscht haben und danach Ihr Backup aktualisieren, wird diese Datei auch in Ihrem Backup nicht mehr vorhanden sein, da Robocopy nicht mehr vorhandene Dateien der Quelle ohne Nachfrage auch im Ziel löscht.
Rot: Die Behauptung von WinTotal, dass xcopy keine inkrementellen Backups anlegen könne, ist falsch. Das geht prima mit den Parametern /M und /D.
Selbst die Logfunktion mit dem Parameter /LOG in Robocopy kann bei der Verwendung von xcopy mit der Ausgabeumleitung realisiert werden.

Grün: Das und die damit verbundene Synchronize-Funktion ist der einzige wirkliche Vorteil von Robocopy gegenüber xcopy, eventuell auch noch seine Monitor-Funktion.

verborgener Text:
Code:
C:\Dokumente und Einstellungen\Benutzer>xcopy /?
Kopiert Dateien und Verzeichnisstrukturen.

XCOPY Quelle [Ziel] [/A | /M] [/D[:Datum]] [/P] [/S [/E]] [/V] [/W]
                    [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
                    [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]
                    [/EXCLUDE:Datei1[+Datei2][+Datei3]...]

  Quelle    Die zu kopierenden Dateien.
  Ziel      Position und/oder Name der neuen Dateien.
  /A        Kopiert nur Dateien mit gesetztem Archivattribut,
            ändert das Attribut nicht.
  /M        Kopiert nur Dateien mit gesetztem Archivattribut,
            setzt das Attribut nach dem Kopieren zurück.
  /D:M-T-J  Kopiert nur die an oder nach dem Datum geänderten Dateien.
            Ist kein Datum angegeben, werden nur Dateien kopiert,
            die neuer als die bestehenden Zieldateien sind.
  /EXCLUDE:Datei1[+Datei2][+Datei3]...
            Gibt eine Liste von Zeichenfolgen an. Jede Zeichenfolge
            sollte in einer einzelnen Zeile in der Datei angezeigt werden.
            Wenn eine der Zeichenfolgen Teil des absoluten Verzeichnispfads
            der zu kopierenden Datei ist, wird diese Datei vom
            Kopiervorgang ausgeschlossen. Beispiel: Bei der
            Zeichenfolge \obj\ oder .obj werden alle Dateien
            unterhalb des Verzeichnisses OBJ bzw. alle Dateien mit
            der Erweiterung .obj vom Kopiervorgang ausgeschlossen.
  /P        Fordert vor dem Erstellen jeder Zieldatei eine Bestätigung.
  /S        Kopiert Verzeichnisse und Unterverzeichnisse, die nicht leer sind.
  /E        Kopiert alle Unterverzeichnisse (leer oder nicht leer).
            Wie /S /E. Mit dieser Option kann die Option /T geändert werden.
  /V        Überprüft jede neue Datei auf Korrektheit.
  /W        Fordert vor dem Beginn des Kopierens zu einem Tastendruck auf.
  /C        Setzt das Kopieren fort, auch wenn Fehler auftreten.
  /I        Falls Ziel nicht vorhanden ist und mehrere Dateien kopiert
            werden, nimmt XCOPY an, dass das Ziel ein Verzeichnis ist.
  /Q        Zeigt beim Kopieren keine Dateinamen an.
  /F        Zeigt die Namen der Quell- und Zieldateien beim Kopieren an.
  /L        Listet die Dateien auf, die ggf. kopiert werden.
  /G        Ermöglicht das Kopieren von verschlüsselten Dateien auf ein
            Ziel wo Verschlüsselung nicht unterstützt wird.
  /H        Kopiert auch Dateien mit den Attributen 'Versteckt' und 'System'.
  /R        Überschreibt schreibgeschützte Dateien.
  /T        Erstellt die Verzeichnisstruktur, kopiert aber keine Dateien.
            Leere oder Unterverzeichnisse werden nicht kopiert. Um auch diese
            zu kopieren, müssen Sie die Optionen /T /E angeben.
  /U        Kopiert nur Dateien, die im Zielverzeichnis vorhanden sind.
  /K        Kopiert Attribute. Standardmäßig wird 'Schreibgeschützt' gelöscht.
  /N        Beim Kopieren werden die erzeugten Kurznamen verwendet.
  /O        Kopiert Informationen über den Besitzer und ACL.
  /X        Kopiert Dateiüberwachungseinstellungen (bedingt /O).
  /Y        Unterdrückt die Aufforderung zur Bestätigung, dass eine
            vorhandene Zieldatei überschrieben werden soll.
  /-Y       Fordert zur Bestätigung auf, dass eine bestehende
            Zieldatei überschrieben werden soll.
  /Z        Kopiert Dateien in einem Modus, der einen Neustart ermöglicht.

Die Option /Y kann in der Umgebungsvariable COPYCMD vordefiniert sein.
Sie kann mit /-Y in der Befehlszeile deaktiviert werden.
Robocopy und seine Parameter sowie einige Beispiele werden im Link gut erklärt, hab ja nicht gesagt, dass WinTotal schlecht wäre. :angel


PS: Diese meine Meinung soll jetzt keineswegs den Tipp von Jürgen herabwürdigen, den hat er sehr gut beschrieben und damit ebenfalls eine wertvolle Hilfe geleistet. :)
 
Zuletzt bearbeitet:
Vielen Dank für die Erklärungen und Textauszüge Norbert.

Aber die von Jürgen beschriebene Funktion Dummy-Dateien zu erstellen wie ich es ansprach, geht doch nur mit Robocopy, wenn ich recht sehe.

Und in der Tat, da ist das Kopieren, Sichern mit "copy", "xcopy" ja nicht so unbedenklich, das heißt, ein grafisches, heute übliches Backup- oder Synchron-Prgramm ist da wohl sinnvoller zu nutzen, könnte ich mir vorstellen.

Läßt sich eigentlich eine batch-Datei, also Endung bat, oder etwas derartiges erstellen, womit ich die Funktion, also das erzeugen von Dummy-Dateien wie oben beschrieben mit einem Klick, bzw. komfortabel starten könnte?

Der Befehl T:\downloads I:\test2 /create funktioniert nicht, "I:\test2" wird plötzlich als ungültiger Parameter angezeigt, woran könnte das liegen? Dirks - 2012-09-29_103701.jpg
 
Zuletzt bearbeitet:
Hallo Dirck,

ich habe mal eben ein einfaches Batch-Skript geschrieben, was beliebig viele Dateien mit leerem Inhalt erstellt ;).

Einfach folgenden Code in eine Datei mit der Endung .bat abspeichern:
Code:
@echo off

:: Hier die Anzahl der zu erstellen Dateien hinter dem "=" eintragen:
set files=1000
set counter=1

:counter
echo. > %counter%
if %counter%==%files% exit /b
set /a counter=counter+1
goto counter

In Zeile 4 nach dem Gleichzeichen (=) kannst du die Anzahl der zu erstellenden Dateien eintragen!

Die Datei in einen Ordner packen, öffnen und schon wird die gewünschte Anzahl an Dateien erstellt :)

Gruß,
bastla

Edit: Ich habe eben ein Programm in Pascal programmiert, mit dem du problemlos bis zu exakt 4.294.967.295 Dateien erstellen kannst. Der Sinn ist einfach: Das Pascal-Programm ist einfach schneller, wenn du mehrere Dateien (z. B. 4 Milliarden) erstellen möchtest als das Batch-Skript ;)

Das Programm fragt bei einem normalen Start nach der Anzahl der Dateien, es kann aber auch mit einem Parameter gestartet werden.
Code:
CreateFile.exe 1000
erstellt z. B. deine tausend benötigten Dateien :). Ideal, um das Programm in einem Batch-Skript zu nutzen.

Wie immer übernehme ich keine Haftung für Schäden jeglicher Art!

Edit #2: Ich habe die Zahl der zu erstellenden Dateien von 4.294.967.295 auf 60.000 reduziert, um die Sicherheit des eigenen Systems zu gewährleisten - Danke Norbert :)!
 

Anhänge

  • CreateFile by bastla.zip
    66,8 KB · Aufrufe: 301
Zuletzt bearbeitet:
Aber die von Jürgen beschriebene Funktion Dummy-Dateien zu erstellen wie ich es ansprach, geht doch nur mit Robocopy, wenn ich recht sehe.
Jein, mit copy/xcopy geht das natürlich nicht.
Aber mit dem Windows-Explorer -> rechter Mausklick auf eine leere Stelle, "Neu" -> "Textdokument".
Oder, wenn es nicht unbedingt 0 Byte sein müssen, kleiner Trick in der Eingabeaufforderung -> echo.>dummy
Erzeugt eine 2 Byte kleine Datei, die nur einen Zeilenumbruch enthält (der Punkt im Kommando ist wichtig, siehe auch bastlas Batch-Skript).
Danach mit SoKoBaNs Tipp vervielfältigen.

...da ist das Kopieren, Sichern mit "copy", "xcopy" ja nicht so unbedenklich, ...
"nicht unbedenklich" kann man nicht sagen, es ist halt mit einem grafischen Programm einfach komfortabler, da man keine Kommandozeilen-Befehle und ihre Parameter kennen muss. Und oft bieten ja solche Programme wie Robocopy noch ein bisschen mehr. Aber das nur für die Erzeugung einer leeren Datei zu starten und sich durchzuklicken dauert fast länger als mit dem Explorer. Ich selber nutze ja den kostenlosen Dateimanager FreeCommander, der kann u.a. auch synchronisieren, da benötige ich also kein sonstiges Programm mehr dafür.

Der Befehl T:\downloads I:\test2 /create funktioniert nicht, "I:\test2" wird plötzlich als ungültiger Parameter angezeigt, woran könnte das liegen?
Schau dir nochmal die Tabelle "Ausgewählte Parameter im Überblick" in der Anleitung in meinem Link oben auf WinTotal an, den Parameter /create gibt es da nicht. Eventuell existieren unterschiedliche Version des Programms, hier mal noch ein anderer Link zu Robocopy, dort wird aber auch nur ein Auszug der möglichen Parameter angezeigt und /create ist leider nicht zu entdecken. Es scheint auch so, wie du oben schon geschrieben hattest, dass Robocopy auf Groß-/Kleinschreibung achtet. Guck da auch mal nach, leider ist ja in deinem Screenshot der tatsächlich eingegebene Befehl nicht zu sehen.

Ich habe eben ein Programm in Pascal programmiert, mit dem du problemlos bis zu exakt 4.294.967.295 Dateien erstellen kannst.
Mach das mal, bastla! Und wehe, es existiert schon vorher auch nur eine Datei im Verzeichnis.
Schätze, deine MFT wird ganz schön dicke Backen bekommen. :mampf
Bedenke auch, dass diese Anzahl nur für NTFS gilt, in einem FAT32 Dateisystem sind es nur 65534, wobei sich die Anzahl durch die übliche Verwendung langer Dateinamen drastisch verringern kann.

@Dirck: Tue das bloß nicht mit den 4 Milliarden Dummys! Ich weiß nicht, was dann passiert.

@bastla:
Sicherheitshalber würde ich im Programm ja noch eine Begrenzung auf ein sinnvolles Maximum einbauen, sagen wir, etwa 60000, damit es auch im FAT-Dateisystem keine Probleme gibt.

PS: Zur Schadenshaftung kämst du allerdings auch nicht mehr, wenn mir da als unbedarfter Anwender das System durch dein Programm zerschossen werden würde.
Dann stünde ich vor deiner Haustür.:droh :ROFLMAO:
 
Zuletzt bearbeitet:
@Norbert:
Warum sollten in einem NTFS-Verzeichnis nicht 4 Milliarden Dateien liegen können?
Bei FAT32 seh ich es ja ein, aber bei NTFS?

Und selbst wenn ich dem Programm eine Sperre einbaue, könnte er doch noch das bat-Skript missbrauchen - dann stände ich so oder so als Schuldiger dar :eek: - deswegen übernehme ich keine Haftung :)

Aber ich werde sie dennoch mal eben einbauen - man muss ja kein unnötiges Risko eingehen...

Gruß,
bastla
 
Zuletzt bearbeitet:
Warum können in einem NTFS-Verzeichnis nicht 4 Milliarden Dateien liegen können?
Dafür kann es mehrere Gründe geben, z.B. die Begrenzung durch maximale Sektorenanzahl, Dateigrößen und mehr:
  • NTFS
    Beim Formatieren der Festplatte wird für die MFT ein fester Platz reserviert, der nicht von anderen Dateien belegt werden kann. Wenn dieser voll ist, beginnt das Dateisystem freien Speicher vom Datenträger zu benutzen, wodurch es zu einer Fragmentierung der MFT kommen kann. Standardmäßig wird ein reservierter Bereich von 12,5%* der Partitionsgröße angenommen.
    Dateien pro Laufwerk
    Theoretisch 4.294.967.295 (2³² Dateien minus 1 Datei), was der maximalen Cluster-Anzahl entspricht, jedoch weiteren Ausnahmen und Restriktionen unterliegt.
  • Speicherplatz für Master File Table konfigurieren
    Da die Größe der MFT nicht unendlich ist, wird die Größe der Datei irgendwann überschritten. Dadurch wird die MFT außerhalb des geschützten Bereiches erweitert, was zu einer Fragmentierung der MFT führt.

    Bedeutet:
    Sie greifen auf ein Verzeichnis mit 100 Dateien zu. Diese Dateiinformationen werden als erstes in die MFT eingetragen, wenn Sie dort noch nicht vorhanden sind. Wird dabei die max. Größe der MFT überschritten, wird die Datei außerhalb des geschützten Bereiches vergrößert, was zu einer Fragmentierung der MFT-Datei führt. Dadurch wird der Zugriff auf diese Datei langsamer. Wenn Sie also mit vielen Dateien arbeiten, ist es sinnvoll die Größe des geschützten Bereiches für die MFT-Datei zu ändern, damit Informationen in einer nicht fragmentierten Datei abgelegt werden. Dadurch wird der Zugriff beschleunigt.
    * Bei 50% ist allerdings Schluss.

    Ich vermute mal sehr stark, dass sie nach einer Vergrößerung nicht wieder verkleinert wird, wenn man eine Menge überflüssiger Dateien löscht.
    Einzige Abhilfe, falls dem so ist: Neuformatierung!

"Sperre einbauen":
Übrigens könntest du ja auch im Programm das Dateisystem vom Zieldatenträger abfragen und die maximale Größe dann dynamisch entsprechend setzen. ;)
 
ot:
Weiß du mal eben einen Weg, dass in Pascal abzufragen? Ich kenne grade keinen und schnelles Googlen bracht auch nichts...
 
Huch, eiskalt erwischt. :eek: Dachte ich's mir doch, dass diese Frage kommt. :ROFLMAO:
Da müsste ich auch erst mal nachschauen und Delphi ist bei mir momentan nicht wieder installiert.
Kann dein Luzifer... ähh... Lazarus denn auch Assembler, so wie Delphi/Turbo-Pascal mit der Anweisung "ASM"?
Dann würde ich das mittels eines Interrupts abfragen.
Frag mich aber jetzt nicht, welche INT-Nummer, siehe mal bitte selber in dieser Liste nach.
 
Hehe :D
Jupp, bei Lazarus gibt auch den "ASM"-Block :)

Beispiel:
Code:
{$ASMMODE intel}
asm
  MOV EAX, 100
  ADD EAX, 110B
  SUB EAX, 2 
  MOV ergebnis, EAX
end
ShowMessage('Ergebnis: ' + StrToInt(ergebnis));

Bin in Assembler nicht so versiert, wonach muss ich in der Liste denn Ausschau halten?
Ist der Assembler-Code denn nachher auch für Linux und Mac funktionsfähig? Weil sonst würde der Sinn von Lazarus ja verloren gehen... :unsure:

Gruß,
bastla
 
Liste: Ich sag ja, da müsste ich selber auch suchen, nach Stichworten wie "file system" halt oder so.
Die Betriebssystemversion wäre ja einfach, aber das sagt schließlich nichts über das Dateisystem aus.

BTW: Wie sieht es denn eigentlich mit der Windows-API aus, die müsste doch auch so etwas bieten?

Linux, Mac: Wenn die auf x86 Rechnern laufen und den Posix-Standard der Interrupts unterstützen, dann ja.
 
Betriebssystem könnte man auch einfach über Lazarus abfragen :), sogar die Bit-Zahl kann man noch mit Lazarus-Mittel herrausfiltern...
Sind jeder dieser zip-Pakete immer 13 Dateien? Wenn ja, dann gehe ich die heute abend nicht mehr durch :eek:

Aber da sagst du was: Windows kann doch seit XP, glaub ich, nur auf NTFS laufen, oder? Wenn GetCurrentDir mit C beginnnt, dann wäre diese Platte doch schonmal NTFS, oder?
 
Oben