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 TODO List in ( Batch )

Mitglied: clragon

clragon (Level 1) - Jetzt verbinden

12.11.2016 um 23:09 Uhr, 861 Aufrufe, 4 Kommentare

Hallo Liebe Forum-Nutzer

Ich habe heute versucht, mir eine Batch zu schreiben die Notizen anzeigt, aka eine Todo Liste die ich in eine txt schreibe.

Diese Startet beim start von Windows über ein Registry Key.
Das Script sollte die Linien in der Mitte eines Fensters "Tippen"

Problem: Ich habe versucht alles zu automatisieren. Eine bestimmte Engine in Script versucht, den ganzen Text in der
Mitte des Fensters zu platzieren, indem sie die String länge erfasst und dann eine variable mit Leerzeichen schreibt und diese VOR dem text anzeigt.

Unglücklicherweise... funktioniert irgendetwas daran nicht, nur die erste Linie wird richtig angezeigt, die anderen werden irgendwo im Nirwana geschrieben.

Der Code ist hier; Bereit für Copy&Paste und Ausführung nur leicht modifiziert, mit Kommentaren aber ohne txt Auslesung.

01.
@echo off
02.
setlocal enableextensions enabledelayedexpansion
03.
Title Today's ToDo List - %date%
04.
mode con cols=80 lines=40
05.

06.

07.
set "speed=70"
08.
set lines=0
09.

10.
:: Titel wird angezeigt
11.

12.
echo ________________________________________________________________________________
13.
echo.
14.
echo              ÛÛÛÛÛ  ÛÛÛÛÛ  ÛÛÛÛ   ÛÛÛÛÛ     Û      Û  ÛÛÛÛÛ  ÛÛÛÛÛ
15.
echo                Û    Û   Û  Û   Û  Û   Û     Û      Û  Û        Û   
16.
echo                Û    Û   Û  Û   Û  Û   Û     Û      Û  ÛÛÛÛÛ    Û   
17.
echo                Û    Û   Û  Û   Û  Û   Û     Û      Û      Û    Û   
18.
echo                Û    ÛÛÛÛÛ  ÛÛÛÛ   ÛÛÛÛÛ     ÛÛÛÛÛ  Û  ÛÛÛÛÛ    Û   
19.
echo.
20.
echo ________________________________________________________________________________
21.

22.
:: Die ausgeschaltete TXT Auslese-Engine
23.
::   for /f "usebackq delims=" %%i in ("%userprofile%\Desktop\todo.txt") do set /a lines+=1 & set "line!lines!=%%i"
24.

25.
:: Für tests eingefügte Standard Linien, die den Fehler deutlich representieren
26.
:: Notiz: Eine zu lange Linie wird aus irgendeinem grund das Script zum Absturz bringen
27.

28.
set line1=this is line one
29.
set line2= this is line 2
30.
set line3=too long lines 
31.
set line4=will crash the script
32.
set /a lines=4
33.

34.

35.
:: Ein MEchanismus um einen Backspace Charakter einer Variable, ( %%a) zuzuweisen
36.
for /f %%a in ('"prompt $H&for %%b in (1) do rem"') do set "BS=%%a"
37.

38.
:: Das theoretische Hauptscript. Es ruft die alle Funktionen auf
39.
for /L %%b in (1,1,%lines%) do (
40.
set num=0
41.
set "line=!line%%b!"
42.
call :center
43.
call :type
44.
)
45.

46.
:: rem Der Abschluss des Scripts, mit einer weiteren 80 breiten _ Linie
47.
echo ________________________________________________________________________________
48.

49.
:: rem Hier endet das Script dann.
50.
pause>nul
51.
goto :EOF
52.

53.
:type
54.

55.
:: rem eine zufällige Wartezeit um einen "realistischen" Tip-Mechanismus zu erschaffen
56.
set "letter=!line:~%num%,1!"
57.
set "delay=%random%%random%%random%%random%%random%%random%%random%"
58.
set "delay=%delay:~-6%"
59.
:: rem hier wird der Buchstabe geschrieben
60.
if not "%letter%"=="" set /p "=a%bs%%letter%" <nul
61.

62.

63.
:: rem Hier wird gewartet, und überprüft ob noch ein BUchstabe vorhanden ist
64.
for /L %%c in (1,%speed%,%delay%) do rem
65.
if "%letter%"=="" echo.&goto :EOF
66.
set /a num+=1
67.
goto :type
68.

69.

70.
:: rem Das Center für .... Centering
71.
:center
72.
set "leng=0"
73.
set "finlen=0"
74.

75.
call :length "!line!" "leng"
76.

77.

78.
:: rem Hier wird die Fensterbreite ( 80 ) Minus die Variablen Länge gerechnet, und dann durch 2
79.
:: rem um die Leerzeichen vor dem eigentlichen Text zu erhalten.
80.
:: rem Mir fällt gerade auf das mein Problem vieleicht auch dadurch gelöst werden könnte indem Ich die Leerzeichen einfach nochmal, und zwar nach dem text schreibe,
81.
:: rem Jedoch ist das eigentlich nicht mein Ziel und Das script sollte nach dem Text sowieso eine Neue Linie erzeugen
82.

83.
set /a "finlen=80-%leng%"
84.
set /a "finlen=%finlen%/2"
85.

86.
call :fin "%finlen%" "finvar"
87.

88.

89.
:: rem Hier werden die Leerzeichen geschrieben. Ich hab das schreiben dieser in verschiedenen Kombinationen des Backspace Charakters versucht, jedoch ohne das gewünschte Ergebnis
90.
set /p "=a%bs%!finvar!" <nul
91.
exit /b
92.

93.
:length <measure> <output>
94.
:: rem hier wird die Variablen-Länge ausgezäht und gesetzt
95.

96.
set "string=%~1"
97.
:lengthsub
98.
if defined string ( set "string=%string:~1%" & set /a "len +=1" & goto lengthsub )
99.
set /a "%~2=%len%"
100.
exit /b
101.

102.
:fin <spaces> <centerText> <output>
103.

104.
:: rem Hier werden die Leerzeichen erzeugt
105.
set /a "leno=%~1"
106.
:subD
107.
if "%leno%" GTR "0" ( set "Demo=%Demo% " & set /a "leno-=1" & goto :subD )
108.
set "%~2=%Demo%"
109.
exit /b
110.

111.
bitte den Code nicht einfach komplett neuschreiben xD

Danke im vorraus für die Antworten

lg clragon
Mitglied: rubberman
LÖSUNG 13.11.2016 um 02:47 Uhr
Hallo clragon.

Du hast vergessen Variablen neu zu initialisieren. Ich weiß nicht welche das alles sind (z.B. len), ist aber auch halb so wild. Die Aufrufe der Routinen in eine eigene Subumgebung zu packen, die dann wieder aufgehoben wird, sollte darüber hinweg helfen.
01.
setlocal
02.
call :center
03.
call :type
04.
endlocal
Grüße
rubberman
Bitte warten ..
Mitglied: clragon
13.11.2016 um 11:05 Uhr
Danke für die Hilfe!
Ich habe diesmal versucht, genug Informationen direkt von Anfang mitzuliefern.
Bitte warten ..
Mitglied: canlot
13.02.2019 um 12:48 Uhr
Hi,

offtopic:

Warum schreibt man heute noch Batch????
Warum?
Heutzutage schreibt man powershell Scripte oder wenn es was vernünftiges sein soll, dann eine richtige Programmiersprache nehmen.
Ode machst du das aus Langeweile?

Gruß
Bitte warten ..
Mitglied: clragon
13.02.2019 um 14:26 Uhr
Hi,

Hast du dir mal das Datum des Posts angeschaut?
Sind schon ein paar Jährchen vergangen.

Batch ist leicht zu lernen und es ist zum einsteigen geeignet,
sowie für kleine Projekte und Dinge die keine Komplexen Mechanismen benötigen.

Powershell ist meiner Meinung nach eine Abscheulichkeit und
bevor ich das anfasse bau ich mir lieber Dinge in C#, Java oder Python zusammen.


lg clragon
Bitte warten ..
Ähnliche Inhalte
Windows 7
Win7 firewall list von
Frage von AtoAtoWindows 77 Kommentare

hallo in Win7 kann ich mit dem Befehl netsh advfirewall firewall show rule status=enabled name=all zeige alle Rules, die ...

Exchange Server

Aufgaben - ToDo Liste für Windows 7 mit Exchange Sync

Frage von lowbudgetExchange Server1 Kommentar

Hallo, ich suche ein Tool, welches mir unter Windows 7 meine Echange aufgaben anzeigen. Ich meine jetzt nicht Outlook ...

Router & Routing

Mikrotik 6.43.8 Interface List Firewall

Frage von wusa88Router & Routing15 Kommentare

Hallo Zusammen, ich habe mein Netzwerk komplett neu aufgebaut und auch meinen Mikrotik mit der momentan aktuellsten Firmware geupdated. ...

Windows 10

Jump List geändert ohne Erfolg

Frage von ErbsenzaehlerWindows 10

Hallo, bin neu hier - habt Nachsicht und schon mal im Voraus danke für Eure Hilfe. Ich möchte die ...

Neue Wissensbeiträge
Off Topic
Europawahl 2019 - Ein Statement der Jugend
Information von Frank vor 23 StundenOff Topic14 Kommentare

Dies ist ein offener Brief. Ein Statement. Von einem großen Teil der Youtuber-Szene. Am Wochenende sind die EU-Wahlen und ...

Off Topic
Europawahl 2019
Information von Frank vor 2 TagenOff Topic44 Kommentare

Vom 23. bis 26. Mai 2019 findet die Europawahl in den Mitgliedstaaten der Europäischen Union statt (ja auch in ...

Humor (lol)

Minister wollen offenbar Ausweispflicht für .de-Domain

Information von Kraemer vor 2 TagenHumor (lol)7 Kommentare

Zitat von Golem.de: Die zuständigen Verbraucherschutzminister fordern einem Medienbericht zufolge offenbar eine Ausweispflicht für .de-Domains. Das soll Betrugsfälle mit ...

Off Topic
Was als Noob hier mal gesagt werden musste
Information von th30ther vor 4 TagenOff Topic5 Kommentare

Moinsen wertes Forum, ich möchte mich an dieser Stelle mal beim Forum generell und bei aqui speziell bedanken! Ich ...

Heiß diskutierte Inhalte
Router & Routing
ZyXEL ZyWALL USG 20 Routing
Frage von Oggy01Router & Routing27 Kommentare

Hallo, und wieder habe ich ein Problem mit dem Routing. Bis vor ein paar Tagen habe ich das mit ...

Off Topic
Europawahl 2019 - Ein Statement der Jugend
Information von FrankOff Topic14 Kommentare

Dies ist ein offener Brief. Ein Statement. Von einem großen Teil der Youtuber-Szene. Am Wochenende sind die EU-Wahlen und ...

LAN, WAN, Wireless
Welches Material ist das Richtige?
Frage von Motte990LAN, WAN, Wireless12 Kommentare

Guten Morgen Leute, ich bin aktuell damit beschäftigt in unserm neu gekauften Haus das Netzwerk einzubauen. Aktuell wurden bis ...

Mac OS X
MAC Book ohne Apple ID oder ohne password
gelöst Frage von K2a.DevMac OS X7 Kommentare

Hallo allerseits, Ich würde mir gerne ein macbook zulegen, jedoch kein neues da ich es höchstwahrscheinlich nicht so oft ...