Wie zufällig neu anordnen, Zeilen in eine text-Datei mit einer batch-Datei
Erstelle ich ein code, Streifen durch die verschiedenen MAC-Adressen nach dem Zufallsprinzip, kann aber nicht herausfinden, wie dies zu tun. Meine Gedanken auf, wie man diesen Ansatz ist zufällig zu mischen oder die Reihenfolge ändern der MAC-Adresse in der text-Datei mit diesem script, aber ich kann nicht herausfinden, wie dies mit einer batch-Datei. Wie dies funktioniert, ist, dass Sie gelesen werden "maclist.txt", dann erstellen Sie einen neuen temp-Datei mit dem random order "maclist_temp.txt" werden die neu geordnet-Datei. Dann, es wird ziehen dieser randomisierten Datei um.
Ich habe versucht, Google und die Suche im web, aber ich habe nicht gefunden, was auch nützlich. Ich bin immer noch aktiv auf der Suche, aber jede Beratung wäre sehr hilfreich.
Etwas so einfaches wie das extrahieren und löschen eine zufällige Zeile, und klicken Sie dann hinzufügen an der Unterseite funktionieren könnte. Randomisierung wäre besser, aber ich wollen, halten Sie die original-Liste. So etwas wie:
- Eine temp-Kopie maclist.txt genannt maclist_temp.txt
- Nehmen Sie eine zufällige MAC-Adresse, nehmen Sie ihn aus maclist_temp.txt
- Readd es auf den Boden
Dass ist alles was ich will, aber alle Vorschläge sind willkommen.
- Sie müssen zwei temp-Dateien mindestens und eine geschachtelte
for
Schleife - Wenn auf Linux , diese könnte helfen : zufällige Auswahl von Zeilen aus einer Datei in bash , What ist eine einfache Möglichkeit, zu Lesen, zufällige Zeile aus einer Datei in der Unix-Kommandozeile?
- Ich bin nicht auf Linux, ich bin ein Windows 7-Benutzer. Auch, was ist eine verschachtelte for-Schleife?
- es bezieht sich auf eine Schleife in einer Schleife
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, diese batch-Datei zu helfen, Sie zu mischen Ihre
maclist.txt
. Die Verwendung der batch-code istNach Erteilung dieses Befehls
maclist_temp.txt
enthält eine randomisierte Liste der MAC-Adresse.Hoffe, das hilft.
Hier ist eine einfachere Methode randomize/randomise eine Datei, keine temporären Dateien erforderlich. Sie können auch die Wiederverwendung der gleichen Eingabe-Dateinamen.
Einschränkungen sind: leere Zeilen und die Zeile, beginnend mit
;
wird übersprungen, und die Zeilen beginnend mit=
alle führenden=
Zeichen entfernt und^
Zeichen verdoppelt werden.%
Zeichen verloren gehen... tolles Konzept aber! Vielleicht sind Sie daran interessiert, meine Antwort, das behebt auch das problem mit der potenziellen doppeltenrandom
zahlen...Diese scheint zu funktionieren. Füttern Sie einen Kommandozeilen-parameter der Datei zu randomisieren.
Platz in der cmd-Datei
Es erscheint eine cmd aus, liest die mac-Liste in die innere, dann wird ein zufälliger Wert und einem Schrägstrich auf den mac und sortiert die Liste. Dann diese Liste ist aufgeteilt in der outter für die Verwendung der Schrägstrich als Trennzeichen und drucken Sie die mac-Adresse.
Ich mag foxidrive's Ansatz. Ich möchte dennoch eine Lösung zu bieten, mit den aufgeführten Einschränkungen beseitigt (obwohl
cmd
-bezogene Einschränkungen, wie Datei-Größen < 2 GB und line-Längen < ~ 8 KiB bleiben).Den Schlüssel verzögerte Erweiterung, welchen Bedarf ein-und ausgeschaltet werden, um nicht zu verlieren explamation markiert. Das löst alle möglichen Probleme mit Sonderzeichen wie
^
,&
,%
,!
,(
,)
,<
,>
,|
und"
.Den Zähler
index
wurde implementiert, um nicht zu verlieren, eine einzelne Zeile der original-text, - Datei, was passieren könnte, ohne, weilrandom
zurückgeben kann doppelte Werte; mitindex
angehängt, die resultierende Variablen-Namen$$!random!.!index!
sind einzigartig.Den
findstr /N /R "^"
- Befehl vor jeder Zeile der ursprünglichen Datei mit einer Zeilennummer gefolgt von einem Doppelpunkt. Also keine Zeile leer zu sein scheint, um diefor /F
Schleife, die würde ignorieren Sie solche. Die Nummer der Zeile, auch implizit löst das Problem mit führenden Semikolons, die Standard -eol
Charakterfor /F
.Schließlich alles bis zu und einschließlich dem ersten Doppelpunkt (denken Sie daran der sagte Präfix Hinzugefügt von
findstr
) entfernt wird, aus jeder Zeile, bevor Sie ausgegeben wird, also nicht mehr der führende gleich-Zeichen haben, werden entlassen.So, hier ist der code: