citroendsvier
Goto Top

Batch - Random Zahl in Variable und Textdatei abspeichern

Ich sitze an einer batch, die u.a. folgende Schritte abarbeiten soll:
1.: Namen einer anderen Batch aus einer Textdatei Text.txt auslesen und in Variable %nameold% speichern
2.: Eine Random Zahl erstellen und in der Variable %name% speichern
3.: Jene andere Batch umbennen in %name%.bat
4.: %name% in Text.txt speichern, dabei alten Inhalt überschreiben (bzw. alte Text.txt löschen und neue anlegen)

Es hakt aber beim zweiten und dritten Schritt.

Ich habe bis jetzt folgenden Code:

::Auslesen in Variable %nameold%
set /p nameold=<Text.txt

::%name% mit Zufallscode
set /a %random%==%name%

::Umbenennen der Datei in \Daten\
rename "F:\Daten\%nameold%.bat" %name%.bat

::löschen und neu anlegen der Text.txt
del /q /f Text.txt
%name% > Text.txt

Er will aber nicht recht die %random% in %name% speichern, wenn man sich %name% per echo %name% anzeigen lässt, kommt ,,Echo ist ausgeschaltet".

Und dadurch, hoffe ich, benennt er auch die andere batch nicht in [Zahl].bat, sondern in .bat um.

Also, meine Frage: Wieso kommt er mit set /a %random% == %name% nicht klar?
Und weiter: Wie kann ich den Laufwerksbuchstaben bestimmen, um ihn im rename verwenden zu können?

Content-ID: 245324

Url: https://administrator.de/forum/batch-random-zahl-in-variable-und-textdatei-abspeichern-245324.html

Ausgedruckt am: 23.12.2024 um 15:12 Uhr

narthan
Lösung narthan 01.08.2014 aktualisiert um 17:38:47 Uhr
Goto Top
Hallo citroendsvier

Ich habe gerade nicht so viel Zeit und bin nur mit Handy online, aber folgendes ist mir aufgefallen:

Zitat von @citroendsvier:
::%name% mit Zufallscode
set /a %random%==%name%

Versuche mal stattdessen:
set /a name=%random%

Und anschließend mit %name% weiterarbeiten, darin sollte dann die Zufallszahl gespeichert sein.
Wenn ich daheim bin schau ich nochmal richtig deine Frage an, vlt. hilft das aber schonmal...

Bis dann, schönen Gruß,
narthan
Gersen
Lösung Gersen 01.08.2014 aktualisiert um 17:38:49 Uhr
Goto Top
Hallo,

Zitat von @citroendsvier:

::%name% mit Zufallscode
set /a %random%==%name%

versuch doch mal
set /a name=%random%

Gruß,
Gersen
citroendsvier
citroendsvier 01.08.2014 um 14:12:22 Uhr
Goto Top
Danke für die Tipps, genau das war mein Fehler. Funktioniert jetzt, mir ist aber aufgefallen, dass die 5-stellige Zahl immer mit 239 anfängt. Mal 23902, mal 23915, dann 23925. Stört mich für die Anwendung nicht, trotzdem seltsam...

Wie kann ich das Problem mit dem Laufwerksbuchstaben lösen? Falls der USB stick, auf dem das ganze läuft, mal nicht F:\ ist? Ist der in irgendeiner Variable (%0 oder ähnlich) abgespeichert?
citroendsvier
citroendsvier 01.08.2014 um 14:32:39 Uhr
Goto Top
Ich habe jetzt weiter das Problem, dass er in die Textdatei Text.txt nicht nur die Zahl, sondern noch ein Leerzeichen und einen Zeilenumbruch reinspeichert. Kann man das irgendwie unterdrücken? Ich habe es schon so versucht:

set /p nameold=<Text.txt:~0,4

Hat aber leider nicht geholfen. Diese Art von Bearbeitung mag er wohl in dem Zusammenhang nicht. Wie kann ich die beiden Zusatzzeichen wieder löschen? Sonst funktioniert es immer nur einmal..
Gersen
Lösung Gersen 01.08.2014 aktualisiert um 17:39:00 Uhr
Goto Top
Laufwerk findest Du über
set laufwerk=%~d0
Gersen
Lösung Gersen 01.08.2014 aktualisiert um 17:38:58 Uhr
Goto Top
Sinnvollerweise das Leerzeichen gar nicht erst reinschreiben...
echo %name% > Text.txt
schreibt natürlich auch das Leerzeichen nach der Variablen in die Datei. Besser:
echo %name%> Text.txt
Der Zeilenumbruch, den "echo" immer macht, stört beim Einlesen der Variablen nicht.
bastla
Lösung bastla 01.08.2014 aktualisiert um 17:38:57 Uhr
Goto Top
... und für den Fall, dass in %name% zB Wert 1, 2 oder 3 (oder ein anderer einstelliger und daher als Kanalangabe misszuverstehender Wert) stünde, würde
>Text.txt echo %name%
funktionieren (bei anderen Werten aber natürlich auch face-wink).

Grüße
bastla
citroendsvier
citroendsvier 01.08.2014 um 17:35:55 Uhr
Goto Top
danke für die Antworten, seltsamerweise hatte ich noch keinen Wert unter 20k... anscheinend ist, wie ich beim googlen auch in einem englischsprachigen Forum gelesen habe, der Batch-Zufall nicht so ganz Zufall... Aber nochmal danke vielmals an alle! face-smile