Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Umrandung in einer Batchdatei schließen, auch beim Befel set

Frage Entwicklung Batch & Shell

Mitglied: Daffman

Daffman (Level 1) - Jetzt verbinden

12.07.2010 um 23:15 Uhr, 4648 Aufrufe, 29 Kommentare

hello @ all!
ich habe mir ein kleines programm geschrieben um meine musik datein leichter zu finden und abzuspielen, jetzt wollte ich die oberfläche verbessern, doch ich habe ein kleines problem.

hey also mein problem schaut so aus:

ich habe also mir einmal so eine schöne oberflöche gestalltet, das sieht so aus: a36e920449525df83acd4aa2672c669b - Klicke auf das Bild, um es zu vergrößern

wenn ich jetzt etwas eingebe verändert es sich so: 4347d46e97b89f3f900970fc8aa798fa - Klicke auf das Bild, um es zu vergrößern

meine frage ist jetzt, wie bekomme ich auch rechts so eine umrandung hin?

ich danke jetzt schon für antworten


Mit freundlichen Grüßen alexander

PS: wenn das gelöst ist, habe ich schon eine weitere aufgabe :P
29 Antworten
Mitglied: 60730
12.07.2010 um 23:20 Uhr
moin,

oberflächlich gesehen - schreibt man schöne gui nicht in Batch, da eignen sich andere werkzeuge besser.

  • autoit
  • gtk
  • vbs
  • xyz

Gruß

PS:
PS: wenn das gelöst ist, habe ich schon eine weitere aufgabe :P
Ist das eine Drohung, oder ein Versprechen?

btw: Tipps die zur Fehleranalyse oder Erweiterung selbst gezimmerter Tools dienen, immer am besten mit dem Teil des Tools posten, um das es geht. Und Ross & Reiter gilt eigentlich auch für dein Problem, sonst nehmen wir an, du hast Dos 6.22. oder W98se

23:20 Daffman ist schon wieder weg, die Frisur sitzt, ein Bier braucht auch 7 minuten und nicht 4
Bitte warten ..
Mitglied: Daffman
12.07.2010 um 23:33 Uhr
ich weiß, dass DOS jetzt nicht grad das beste ist, aber ich liebe es einfach :P

zur sicherheit: ich habe XP und das ist die Eingabeaufforderung!

es sollte eher hilferuf sein und keine drohung ich dachte nur, ob jemand wüsste, wie ich einen "find" befehl auch so einkasteln könnte.

Mit freundlichen Grüßen Alexander
Bitte warten ..
Mitglied: 60730
12.07.2010 um 23:47 Uhr
Zitat von Daffman:
ich weiß, dass DOS jetzt nicht grad das beste ist, aber ich liebe es einfach :P

ok, das ist kein Dos, ich liebe meine Frau und mein Kind, Scripte naja die mag ich

zur sicherheit: ich habe XP und das ist die Eingabeaufforderung!

es sollte eher hilferuf sein und keine drohung ich dachte nur, ob jemand wüsste, wie ich einen "find" befehl
auch so einkasteln könnte.

Also mit Find würde ich da nix rumstricken und ehrlich das wird nix - such dir die drei von mir genannten genausofreien Lösungen mal an, die sind schön. Das schöne an batch und co ist - das man es im hintergrund machen kann.

Mit freundlichen Grüßen Alexander
zurück

Ps: evtl hast du meinen Text nicht ganz gelesen und dir damit die Chance genommen, jetzt ein kleines Scriptchen in irgendeiner "Sprache " für dein Problemchen zu kriegen, von dem ich dir garantiere, dass es schneller und schöner aussieht, als es ein Batch jemals kann - denn dafür ist Batch nicht gemacht.

23:45 Das Wetter passt und Duffman sitzt neben Homer bei Moe, bei den Admins ist er wieder weg. Q&D
Bitte warten ..
Mitglied: LotPings
13.07.2010 um 09:13 Uhr
Zitat von 60730:
oberflächlich gesehen - schreibt man schöne gui nicht in Batch, da eignen sich andere werkzeuge besser.
Moin Timo,
aber Schönheit liegt doch im Auge des Betrachters

Und auch Batche kann man mit HOrst Schaeffers Wbat schön(er) machen.
(läuft aber als 16-bit Anwendung nicht auf 64-Bit Windows-Versionen)

Ansonsten halte ich vom Kästchen(-Denken) des OP überhaupt nichts

Gruß
LotPings
Bitte warten ..
Mitglied: rubberman
13.07.2010 um 13:21 Uhr
Hallo Alexander,

muss meinen Vorrednern schon Recht geben. Und wenn du deinen Quellcode gepostet hättest, würdest du uns die Beantwortung deiner Frage auch etwas erleichtern.
Aber zu deinem Problemchen:
Wenn du mittels nativem Batch die Lücke schließen willst, hast du keine andere Chance, als die Anzeige zu löschen und neu zu schreiben. Dabei musst du deine Eingabe zu einem String mit fixer Länge verarbeiten (macht in meinem Beispiel die Funktion :addspaces).
Guckst du hier
01.
@echo off &setlocal &mode con cols=70 lines=100 &title Musik finden 
02.
 
03.
call :top 
04.
set /p "input= º " 
05.
 
06.
call :addspaces "%input%" 65 r output 
07.
set "output= º %output%º" 
08.
 
09.
cls 
10.
call :top 
11.
echo %output% 
12.
call :bottom 
13.
pause 
14.
goto :eof 
15.
 
16.
:: ~~~~~~~~~~~ Subroutinen: ~~~~~~~~~~~ 
17.
 
18.
:top 
19.
echo. 
20.
echo  ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» 
21.
echo  º                                                                  º 
22.
echo  º               Musiktitel oder Interpreten eingeben               º 
23.
echo  º                                                                  º 
24.
goto :eof 
25.
 
26.
:bottom 
27.
echo  º                                                                  º 
28.
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 
29.
goto :eof 
30.
 
31.
:addspaces 
32.
:: syntax: 
33.
:: addspaces String AnzahlZeichen Richtung[r/l] Variablenname 
34.
setlocal 
35.
for /l %%i in (1,1,%~2) do ( 
36.
  call set "spaces= %%spaces%%" 
37.
38.
if /i "%~3"=="r" ( 
39.
  set "string=%~1%spaces%" 
40.
  call set "string=%%string:~,%~2%% 
41.
) else ( 
42.
  set "string=%spaces%%~1" 
43.
  call set "string=%%string:~-%~2%% 
44.
45.
endlocal&set "%~4=%string%" 
46.
goto :eof
Grüße
rubberman
Bitte warten ..
Mitglied: Daffman
13.07.2010 um 14:58 Uhr
hey!

ja ich hab es versucht, habe den quelltext kopiert, aber das eingefügte war ein wirrwarr sondergleichen!

ich habe deins jetzt verwendet und was ich bekomme, nähert sich schon meinem gesuchten an, aber ist noch nicht ganz das richtige, denn es entstehen immer leere zeilen.
das heißt, oben ist die waagrechte linie, die zeiel darunter ist leer und die nächste hat dann erst die striche links und rechts und bei der eingabe ist der rechte strich immer ein zeichen zu weit rechts

trotzdem vielen vielen dank!

Mit freundlichen Grüßen alex
Bitte warten ..
Mitglied: rubberman
13.07.2010 um 15:03 Uhr
Hallo,
das liegt wohl an der Breitenbegrenzung (bei mir funktioniert das so, aber bei dir könnte die Anzeige etwas anders sein).
Ändere mal in der ersten Zeile cols=75.

Grüße
rubberman
Bitte warten ..
Mitglied: Daffman
13.07.2010 um 15:26 Uhr
ich habs auf cosl=71 gestellt, dann passts, aber der strich bei der eingabe ist noch immer weiter rechts!

lg alex
Bitte warten ..
Mitglied: Biber
13.07.2010 um 15:45 Uhr
Moin Daffman,

Das liegt daran, dass die in der ersten Zeile gesetzte Zeilenanzahl (cols=71 oder cols=75 oder whatever) natürlich ihre Abhängigkeiten weiter unten im Programmfluss hat.

  • Entweder du setzt die EINMAL als Wert und setzt alle sich daraus ergebenden Werte "berechnend"
  • oder du musst eben, wenn du "mode con cols" um 5 verminderst auch den Parameter "Spaltenbreite" in diesem ":Addspaces"-Block um 5 vermindern.

Steht doch da..

Grüße
Biber
Bitte warten ..
Mitglied: rubberman
13.07.2010 um 16:46 Uhr
@ Biber.
Das kann nicht die Ursache sein, denn die Spaltenanzahl wurde ja von 70 auf 71/75 erweitert (und nicht verringert!).
Wäre sie verringert worden, würde der Zeilenumbruch in der Anzeige in die nächste Zeile rutschen. Die Erscheinung ist aber dass "der Strich zu weit rechts" steht

@ Alex
Welcher Strich ist zu weit rechts? Der rechte oder der linke? Und wann, bei der Eingabe oder danach?

Wenn es der rechte ist, dann musst du beim Aufruf von :addspaces die 65 um die entsprechende Anzahl vermindern.
Wenn es der linke ist, hast du ein Space zu viel bei set /p "input=..." oder set "output=...".

Grüße
rubberman
Bitte warten ..
Mitglied: Daffman
21.07.2010 um 17:22 Uhr
hello!

sry dass ich erst jetzt schreibe, war in koebenhavn!

also das mit dem strich habe ich selbst lösen können, langsam verstehe ich es :P

meine frage, die ich schon ganz oben angekündigt - und kurz besprohen - habe, ist die, ob ich auch einen find' befehl so einkasteln kann.

ih hoffe, ich quäle - langweile - euch nicht, aber mir ist noch eine unklarheit in die hände gefallen. der quellcode ist der folgende:
01.
@echo off 
02.
set num=0 
03.
set z=88 
04.
:LOOP 
05.
if %num%==%z% GOTO :PASST 
06.
set /a num=%num%+1 
07.
for /l %%i in (%num%, 1, %num%) do ( 
08.
call echo %%m%%i%%>>1.tmp 
09.
set /p x1= <1.tmp 
10.
del *.tmp 
11.
GOTO :OUT 
12.
13.
:OUT 
14.
set /a noch=%z%-%num% 
15.
echo. 
16.
if %noch% LSS 100 set ab=  
17.
if %noch% LSS 10 set noch=0%noch% 
18.
set /a sec=%noch%*20 
19.
if "%sec:~0,-2%" LSS "10" (set sec=0%sec:~0,-2%) ELSE (set sec=%sec:~0,-2%) 
20.
echo %sec% 
21.
GOTO :LOOP 
22.
:PASST
hierbei will ich, dass die datei eben die zahlen runterzählt, die eine sekunden angabe sein sollen. doch wenn set /a sec=%noch%*20 180 bzw 160 ergibt, bricht die datei ab. danach geht es wieder. woran kann das liegen??


vielen dank für die geduld

lg alex
Bitte warten ..
Mitglied: Biber
21.07.2010 um 17:31 Uhr
[OT]
Zitat von Daffman:
sry dass ich erst jetzt schreibe, war in koebenhavn!

also das mit dem strich habe ich selbst lösen können, langsam verstehe ich es :P
Auf welchem Strich in koebenhavn warst du denn?

SCRN

Lösch ich nachher wieder....
Biber
[Edit]
brauchst du nicht löschen - ist nur ein zeugnis deiner infantilität
Erwischt... woher weiss er bloss von meiner Vorliebe für Minderjährige..??

[/OT]
Bitte warten ..
Mitglied: Daffman
21.07.2010 um 19:41 Uhr
brauchst du nicht löschen - ist nur ein zeugnis deiner infantilität
- ende des kommentars...
Bitte warten ..
Mitglied: 60730
21.07.2010 um 20:27 Uhr
Zitat von Daffman:
hierbei will ich, dass die datei eben die zahlen runterzählt, die eine sekunden angabe sein sollen. doch wenn set /a
sec=%noch%*20
180 bzw 160 ergibt, bricht die datei ab. danach geht es wieder. woran kann das liegen??

Moin,

naja - meine Vorliebe für Problembatche - die ein führendes @echo off haben - wird wohl mal auf meinem Grabstein stehen....
Nun ist die Axt aus dem Binärwald die - @echo off in Testscripte hasste - wie die Pest
steif und kalt unter diesem Stein - mögen die Betatestscriptschreiber gnädig sein
Und immer dran denken - er hasste das nicht allein...


 
 
 
 
 
Ungültige Zahl. Nummerische Konstanten sind entweder dezimale (17), 
hexadezimale (0x11) oder oktale (021) Zahlen. 
 
Ungültige Zahl. Nummerische Konstanten sind entweder dezimale (17), 
hexadezimale (0x11) oder oktale (021) Zahlen. 
 
01 
 
01 
 
01 
 
 
 
 
 
123
Übrigens muß man deinen Umbau schon vorher etwas anpassen...
Warum der Gummiman die Zeilen 38 und ff s0o gestrickt hat und nicht so wie du, könnte dieses Rätsel lösen, das andere siehe oben.

ich hoffe, ich quäle - langweile - euch nicht,
Und ich danke dir für deine Hausaufgabe, die ich dir etwas Licht ins dunkle liefert, soll dir ja nicht langweilig werden und du sollst das ja auch verstehen.

Gruß
Bitte warten ..
Mitglied: Daffman
21.07.2010 um 20:44 Uhr
Zitat von 60730:

Moin,

naja - meine Vorliebe für Problembatche - die ein führendes @echo off haben - wird wohl mal auf meinem Grabstein
stehen....
Nun ist die Axt aus dem Binärwald die - @echo off in Testscripte hasste - wie die Pest
steif und kalt unter diesem Stein - mögen die Betatestscriptschreiber gnädig sein
Und immer dran denken - er hasste das nicht allein...


dafür entschuldige ich mich inständig -> man kann es auf eine unachtsamkeit zurückführen!!


Übrigens muß man deinen Umbau schon vorher etwas anpassen...
Warum der Gummiman die Zeilen 38 und ff s0o gestrickt hat und nicht so wie du, könnte dieses Rätsel lösen, das
andere siehe oben.


was für einen umbau? gummiman? ich muss zugeben... daraus werde ich nicht schlau, vl liegt es auch daran, dass ich ein wenig kränkl...

bitte um transkription für dummies

Mit freundlichen Grüßen alexander
Bitte warten ..
Mitglied: Daffman
21.07.2010 um 20:58 Uhr
ok hab das problem schon selbst gelöst.


kennt jetzt noch jemand eine lösung für meine frage mit find?

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: Daffman
22.07.2010 um 18:59 Uhr
danke für eure hilfen, für dieses mal verabrschiede ich mich mit dieser Frage, ich habe selber eine lösung gefunden.

vielen dank trotzdem

Mit freundlichen Grüßen alexander
Bitte warten ..
Mitglied: LotPings
22.07.2010 um 19:27 Uhr
Das ist ja nett,

alle Leute die bei einer Suche nach ähnlichen Lösungen diesen Beitrag finden,
dürfen sich/dich dann Fragen was für eine Lösung das ist ?

Findest du das, nachdem sich doch einige Leute Mühe gegeben haben dir zu helfen,
nicht ein wenig Egozentrisch?

Gruß
LotPings

@Biber, vielleicht ja auch nur Egoistisch - Egomanie scheint nicht zu passen
Bitte warten ..
Mitglied: Biber
22.07.2010 um 21:29 Uhr
Moin LotPings,

Zitat von LotPings:
Das ist ja nett,

alle Leute die bei einer Suche nach ähnlichen Lösungen diesen Beitrag finden,
dürfen sich/dich dann Fragen was für eine Lösung das ist ?
Mach dir keine Sorgen.
Wenn das das Schlusswort Daffmans gewesen sein sollte bis zum Wochenende...
.... dann werden keine Leute bei einer Suche nach ähnlichen Lösungen diesen Beitrag finden, versprochen.

Findest du das, nachdem sich doch einige Leute Mühe gegeben haben dir zu helfen,
nicht ein wenig Egozentrisch?
Ich muss jetzt los nach Wikipedia ... mal nachschlagen, was "egozentrisch" heisst...
Ich hab da so einen Verdacht, weil auch ich ein passendes Wort für so ein Verhalten gesucht habe.
... mal sehen, ob wir die gleiche Verhaltensauffälligkeit meinten.

Grüße
Biber
Bitte warten ..
Mitglied: Daffman
22.07.2010 um 22:41 Uhr
Hier ist der gesuchte Code um die find ausgabe einzuramhmen mit ascii (dos erweiterung) zeichen.

01.
mode con cols=80 lines=75  
02.
find /i "%pre%" "blabla".txt>>"blabla1".txt 
03.
04.
FOR /F "delims=: tokens=2*" %%f IN ('findstr /n . "blabla1.txt"') DO echo %%f>>blabla2.txt 
05.
for /f "tokens=1,2* delims=:" %%a in ('findstr /n . "blabla2.txt"') do ( 
06.
set z1=%%a 
07.
set p%%a=%%b 
08.
09.
del *.txt 
10.
 
11.
echo  ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ 
12.
echo  º                                                                            º 
13.
set num=0 
14.
:L 
15.
if %num%==%z1% GOTO :OK 
16.
set /a num=%num%+1 
17.
for /l %%i in (%num%, 1, %num%) do ( 
18.
call echo %%p%%i%%>>1.tmp 
19.
set /p x1= <1.tmp 
20.
del *.tmp 
21.
GOTO :O 
22.
23.
:O 
24.
set zeile=%x1% 
25.
call :len CharCount "%Zeile%" 
26.
goto :OP 
27.
:len RetVal(byRef) Value(Byval) 
28.
setlocal 
29.
set cnt=0 
30.
set "chk=%~2" 
31.
:len_loop 
32.
if not "%chk%"=="" Set /A cnt+=1 & set "chk=%chk:~1%" & goto :len_loop 
33.
endlocal&set /A "%1=%cnt%"&goto :eof 
34.
:OP 
35.
set le=  
36.
set /a abs=73-%CharCount% 
37.
set num0=0 
38.
:KREIS 
39.
if %num0%==%abs% GOTO :OLE 
40.
set /a num0=%num0%+1 
41.
set le=%le%  
42.
GOTO :KREIS 
43.
:OLE 
44.
echo º %x1%%le% º 
45.
GOTO :L 
46.
:OK 
47.
echo  º                                                                            º 
48.
echo  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
ich hoffe, ich konnte deine ängste, mit einem egoistischen menschen geschrieben zu haben, beseitigen.

Zitat von Biber:
Mach dir keine Sorgen.
Wenn das das Schlusswort Daffmans gewesen sein sollte bis zum Wochenende...
.... dann werden keine Leute bei einer Suche nach ähnlichen Lösungen diesen Beitrag finden, versprochen.

gibst du bei Google umrandung mit DOS ein, kommst du zu diesem beitrag - überzeug dich selbst: GOOGLE SUCHE
Bitte warten ..
Mitglied: LotPings
23.07.2010 um 00:44 Uhr
Zitat von Daffman:
Hier ist der gesuchte Code um die find ausgabe einzuramhmen mit ascii (dos erweiterung) zeichen.
Find ich gut Daffman.

Ich hab eine ganze Zeit gebraucht um deinen Code zu verstehen.
Die temporärem Dateien und das Abspeichern in Environment Variablen ist eigentlich nicht nötig.

Mit Sonderzeichen im Text dürfte deine Version auch nicht gut klar kommen.

Hier ist eine etwas universellere und simpler aufgebaute Version, an die Textzeilen werden einfach
genug Blanks angehängt und dann bei 75 Zeichen abgeschnitten (auch ein Umbruch wäre möglich)
01.
@Echo off & SetLocal 
02.
mode con cols=80 lines=75  
03.
Set "pre= " 
04.
Set Inp="%~f0" 
05.
Set "Blanks=                                                                             " 
06.
:: Zeilen zählen 
07.
For /f %%A in ('find /C /i "%pre%" ^<%Inp%') Do Set Zeilen=%%A 
08.
If %Zeilen%. LSS 1. Echo Nix da und tschuess & Goto :Eof 
09.
:: Kopf 
10.
echo  +----------------------------------------------------------------------------+ 
11.
echo  ^|                                                                            ^| 
12.
:: Datei-Inhalt 
13.
For /f "Delims=" %%A in ('find /i "%pre%" ^<%Inp%' 
14.
  ) Do Set "Zeile=%%A%Blanks%" & Call :Out 
15.
:: Fuss 
16.
echo  ^|                                                                            ^| 
17.
echo  +----------------------------------------------------------------------------+ 
18.
Pause 
19.
Goto :Eof 
20.
:Out 
21.
Set "Zeile=%Zeile:"=¬%" 
22.
Set "Zeile= | %Zeile:~0,75%|" 
23.
set "Zeile=%Zeile:^=^^%" 
24.
set "Zeile=%Zeile:(=^(%" 
25.
set "Zeile=%Zeile:)=^)%" 
26.
Set "Zeile=%Zeile:<=^<%" 
27.
Set "Zeile=%Zeile:|=^|%" 
28.
Set "Zeile=%Zeile:>=^>%" 
29.
Set "Zeile=%Zeile:&=^&%" 
30.
Set "Zeile=%Zeile:¬="%" 
31.
Echo %Zeile%
Der Einfachheit halber habe ich die Rahmenzeichen durch einfache Striche/Kreuze ersetzt.
Wenn so ein Batch sich selbst verwursten/darstellen kann ist das schon eine Auszeichnung.
Die Techniken zum Escapen (Maskieren) der Sonderzeichen ist allerdings nicht von mir, sondern stammt AFAIK ursprünglich von Ritchie Lawrence.

ich hoffe, ich konnte deine ängste, mit einem egoistischen menschen geschrieben zu haben, beseitigen.
Um meine Ängste geht es nicht, sondern darum ALLEN Forumsbeteiligten einen Lerneffekt zu verschaffen oder wenigstens etwas Vergnügen durch (evtl. für dich unangenehme) Kommentare.

Auch dein obiger Code weist noch einige Schwachstellen auf, die nur bei einer Begutachtung durch Dritte angesprochen/verbessert werden können.

Gruß
LotPings
Bitte warten ..
Mitglied: Daffman
23.07.2010 um 14:12 Uhr
Zitat von LotPings:
Mit Sonderzeichen im Text dürfte deine Version auch nicht gut klar kommen.

ich habe bis jetzt keine probleme entdeckt, kommt draauf an, von welchen du sprichst.

ich habe mir deines einmal zu herzen genommen und ausprobiert und sogleich ein problem für mich - es funktioniert wunderbar - entdeckt: wie stelle ich das an, wenn ich mehrer von diesen hintereinander habe - wenn also in vier dateien nacheinander mit dem selben such begriff gesucht werden soll. das problem ist bei mir zeile 14:
) Do Set "Zeile=%%A%Blanks%" & Call :Out
und dann 20-31:
Set "Zeile=%Zeile:"=¬%"
Set "Zeile= | %Zeile:~0,75%|"
set "Zeile=%Zeile:^=^^%"
set "Zeile=%Zeile=^(%"
set "Zeile=%Zeile=^)%"
Set "Zeile=%Zeile:<=^<%"
Set "Zeile=%Zeile:|=^|%"
Set "Zeile=%Zeile:>=^>%"
Set "Zeile=%Zeile:&=^&%"
Set "Zeile=%Zeile:¬="%"
Echo %Zeile%

da geht er danach gleich weiter zur nächsten datei und springt nimmer nach oben... wie kann man das beheben??

Mit freundlichen Grüßen
alexander
Bitte warten ..
Mitglied: LotPings
26.07.2010 um 09:55 Uhr
Hallo alexander,

sorry, ich verstehe deine Frage nicht.
Welche Fehler mit welcher Batch?
Mein Original (Quelltext kopiert) funktioniert hier auf mehreren berschiedenen Windows-OS einwandfrei.

Gruß
LotPings
Bitte warten ..
Mitglied: Daffman
26.07.2010 um 12:24 Uhr
Tut mir leid, wenn ich mich unklar ausgedrückt habe:

meine frage war: wie mache ich, dass ich gleich hintereinander - z.B. - die Datei 1.txt, 2.txt und 3.txt durchsuche, mit deiner Batch die du gepostet hast??
ich habe es auf mehreren arten probiert aber nie geschafft!


Mit freundlichen Grüßen
alexander
Bitte warten ..
Mitglied: LotPings
26.07.2010 um 18:52 Uhr
Sorry ich komme nicht mit,

gings es hier nicht um die Darstellung einer Datei mit einem geschlossenen Rahmen?
Meine Batch tut im Prinzip nichts anderes als deine etwas kompliziertere Version ( wobei mir klar ist das das scheinbar nur ein Fragment war)
Aber was ich nicht sehe, kann ich auch nicht verschlimmbessern

Gruß
LotPings
Bitte warten ..
Mitglied: Daffman
26.07.2010 um 20:38 Uhr
bin ich wirklich soo kompliziert? na gut also:

01.
@Echo off & SetLocal 
02.
mode con cols=80 lines=75  
03.
Set /p pre= 
04.
Set Inp="My Downloads.txt" 
05.
Set "Blanks=                                                                             " 
06.
For /f %%A in ('find /C /i "%pre%" ^<%Inp%') Do Set Zeilen=%%A 
07.
If %Zeilen%. LSS 1. Echo Nix da und tschuess & Goto :Eof 
08.
echo  +----------------------------------------------------------------------------+ 
09.
echo  ^|                                                                            ^| 
10.
For /f "Delims=" %%A in ('find /i "%pre%" ^<%Inp%' 
11.
  ) Do Set "Zeile=%%A%Blanks%" & Call :Out 
12.
echo  ^|                                                                            ^| 
13.
echo  +----------------------------------------------------------------------------+ 
14.
Pause 
15.
Goto :Eof 
16.
:Out 
17.
Set "Zeile=%Zeile:"=¬%" 
18.
Set "Zeile= | %Zeile:~0,75%|" 
19.
set "Zeile=%Zeile:^=^^%" 
20.
set "Zeile=%Zeile:(=^(%" 
21.
set "Zeile=%Zeile:)=^)%" 
22.
Set "Zeile=%Zeile:<=^<%" 
23.
Set "Zeile=%Zeile:|=^|%" 
24.
Set "Zeile=%Zeile:>=^>%" 
25.
Set "Zeile=%Zeile:&=^&%" 
26.
Set "Zeile=%Zeile:¬="%" 
27.
Echo %Zeile% 
28.
 
29.
Set Inp="Musik.txt" 
30.
For /f %%A in ('find /C /i "%pre%" ^<%Inp%') Do Set Zeilen=%%A 
31.
If %Zeilen%. LSS 1. Echo Nix da und tschuess & Goto :Eof 
32.
echo  +----------------------------------------------------------------------------+ 
33.
echo  ^|                                                                            ^| 
34.
For /f "Delims=" %%A in ('find /i "%pre%" ^<%Inp%' 
35.
  ) Do Set "Zeile=%%A%Blanks%" & Call :Out 
36.
echo  ^|                                                                            ^| 
37.
echo  +----------------------------------------------------------------------------+ 
38.
Pause 
39.
Goto :Eof 
40.
:Out 
41.
Set "Zeile=%Zeile:"=¬%" 
42.
Set "Zeile= | %Zeile:~0,75%|" 
43.
set "Zeile=%Zeile:^=^^%" 
44.
set "Zeile=%Zeile:(=^(%" 
45.
set "Zeile=%Zeile:)=^)%" 
46.
Set "Zeile=%Zeile:<=^<%" 
47.
Set "Zeile=%Zeile:|=^|%" 
48.
Set "Zeile=%Zeile:>=^>%" 
49.
Set "Zeile=%Zeile:&=^&%" 
50.
Set "Zeile=%Zeile:¬="%" 
51.
Echo %Zeile%
dieser code funktioniert nicht. (zur info: das erste mal ist Set Inp="My Downloads.txt" und das zweite mal Set Inp="Musik.txt")

ich hoffe, diesmal habe ich alles geschrieben und die wichtigen teile nicht nur gedacht.

Mit freundlichen Grüßen alexander
Bitte warten ..
Mitglied: Biber
26.07.2010 um 21:10 Uhr
Und wenn du mal das "goto:eof" aus Zeile 15 vorsichtig und liebe voll clonst und sanft in Zeile 28 duplizierst?
Du hast 2x eine baugleiche und gelichnamige Prozedur namens :Out definert.. welche soll denn die CMD.exe wann und warum nehmen?
Aber okay, die zweite findet eh' keiner... da könnte ebensogut ein kleiner Haiku stehen oder "2 Becher mitbringen und Mutti anrufen".

Und zu guter Letzt... nur mal angenommen, der Schnipsel würde tatsächlich treudoof, wie Bätche nun mal sind, in den ersten "Call :Out"-Aufruf reinstolpern.. und auch tatsächlich die erste ":Out"-Subroutine finden...
Dann läuft er , da diese :Out ja nirgends mit "goto :eof" beendet wird- weiter zur nächsten Datei "Musik.txt",
von da wieder nach oben in die "Call:Out"...
...ohne Pause wieder zur "Musik.txt" ..
....von da wieder zur "Call: Out".... usw.
Das kann sich hinziehen.

Wenn du möchtest, dass mehrere Dateien in eine Schleifenverarbeitung denselben Algorithmus über sich ergehen lassen sollen, dann ...
*Überraschung* solltest du diese Dateien in einer Schleife abarbeiten.
Eine FOR-Anweisung wäre meine Empfehlung.

Grüße
Biber

BTW... die jetzige Fragestellung hat in etwa so viel mit der Ursprungsfrage zu tun wie die Aussagen der FDP vor der Wahl mit ihren Aussagen 2 Minuten nach der Wahl.
Bitte warten ..
Mitglied: Daffman
26.07.2010 um 22:30 Uhr
Zitat von Biber:
Und wenn du mal das "goto:eof" aus Zeile 15 vorsichtig und liebe voll clonst und sanft in Zeile 28 duplizierst?
Du hast 2x eine baugleiche und gelichnamige Prozedur namens :Out definert.. welche soll denn die CMD.exe wann und warum nehmen?
Aber okay, die zweite findet eh' keiner... da könnte ebensogut ein kleiner Haiku stehen oder "2 Becher mitbringen
und Mutti anrufen".


Wenn du möchtest, dass mehrere Dateien in eine Schleifenverarbeitung denselben Algorithmus über sich ergehen lassen
sollen, dann ...
*Überraschung* solltest du diese Dateien in einer Schleife abarbeiten.
Eine FOR-Anweisung wäre meine Empfehlung.


ja mit dem zweichen :OUT war mein fehler, ich hab den quelltext also verständnishilfe für mein gedankenkonstrukt verwendet und da vergessen ihn anzupassen. das war nat. von vornherein klar, dass er umbenannt gehört, doch das GOTO :EOF war clou. ich bin mit diesem befehl nicht sonderlich vertraut und weis nicht recht, wie er funktioniert - egal.

Zitat von Biber:

BTW... die jetzige Fragestellung hat in etwa so viel mit der Ursprungsfrage zu tun wie die Aussagen der FDP vor der Wahl mit ihren
Aussagen 2 Minuten nach der Wahl.

da fällt es mir schwer etwas dazu zu sagen, da ich mich (speziel) für die deutsche politik nicht sonderlich interessiere. aber meine annahme ist, dass Du meinst, das jetzt behandelte Thema ist sehr kontrovers zur Fragestellung. Ansichtssache. Für mich ist es eine art folgefrage.

Mit freundlichen Grüßen
alexander

PS: aber trotzdem danke für deine hilfe
Bitte warten ..
Mitglied: LotPings
27.07.2010 um 18:33 Uhr
Hallo alexander,

:eof ist ein immer vorhandener, von der CMD.exe vorgehaltener Label für End Of File
Ein goto :Eof bewirkt ein Beenden des laufenden Batches resp. der aktuellen Subroutine.

Das gehört immer ans Ende des Hauptteils vor ggfs vorhandene Subroutinen.

Wenn du ein Programmteil mehrfach mit unterschiedlichen Argumenten benutzen willst mach einfach eine Subroutine draus.
Wobei mir nicht klar ist, welchen Sinn mehrere am Bildschirm durchlaufende umrahmte Dateien machenn ....

FWIW ungestestet:
01.
@Echo off & SetLocal 
02.
mode con cols=80 lines=75  
03.
Set Set /P pre="Pre angeben: " 
04.
Set "Blanks=                                                                             " 
05.
For %%A in ("MY Downloads.txt"  
06.
            "Musik.txt"       ) Do Call :ProcFile %%A 
07.
Goto :Eof 
08.
:ProcFile 
09.
Set Inp=%1 
10.
:: Zeilen zählen 
11.
For /f %%A in ('find /C /i "%pre%" ^<%Inp%') Do Set Zeilen=%%A 
12.
If %Zeilen%. LSS 1. Echo Nix da und tschuess & Goto :Eof 
13.
:: Kopf 
14.
echo  +----------------------------------------------------------------------------+ 
15.
echo  ^|                                                                            ^| 
16.
:: Datei-Inhalt 
17.
For /f "Delims=" %%A in ('find /i "%pre%" ^<%Inp%' 
18.
  ) Do Set "Zeile=%%A%Blanks%" & Call :Out 
19.
:: Fuss 
20.
echo  ^|                                                                            ^| 
21.
echo  +----------------------------------------------------------------------------+ 
22.
Pause 
23.
Goto :Eof 
24.
:Out 
25.
Set "Zeile=%Zeile:"=¬%" 
26.
Set "Zeile= | %Zeile:~0,75%|" 
27.
set "Zeile=%Zeile:^=^^%" 
28.
set "Zeile=%Zeile:(=^(%" 
29.
set "Zeile=%Zeile:)=^)%" 
30.
Set "Zeile=%Zeile:<=^<%" 
31.
Set "Zeile=%Zeile:|=^|%" 
32.
Set "Zeile=%Zeile:>=^>%" 
33.
Set "Zeile=%Zeile:&=^&%" 
34.
Set "Zeile=%Zeile:¬="%" 
35.
Echo %Zeile%
Gruß
LotPings
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Outlook & Mail
Fehlermeldung beim schließen von Outlook 2016 auf Terminalserver (7)

Frage von Tommy1983 zum Thema Outlook & Mail ...

Microsoft Office
gelöst Word stürtzt beim schließen oder speichern ab (8)

Frage von BoomBasti zum Thema Microsoft Office ...

Batch & Shell
gelöst Mit Batchdatei Informationen auslesen und diese strukturiert in Excel ausgeben (9)

Frage von Flodsche zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...