wullebier
Goto Top

Echo ist Ausgeschaltet

Hallo miteinander,

Ich versuche gerade die Ausgabe einer For-Schleife, welche ich in einer .txt Datei speicher, zu optimieren.
Dabei wird zwar richtig ausgegeben, aber am Anfang steht immer "Echo ist ausgeschaltet"

nochmal zur Verdeutlichung:
Echo ist ausgeschaltet (OFF).
Echo ist ausgeschaltet (OFF).
{rest von Ausgabe}
{rest von Ausgabe}
{rest von Ausgabe}

Also die ersten zwei Zeilen sollen praktisch nicht ausgegeben werden.
Am anfang der .bat schalte ich Echo mit "@echo off" aus.
Wisst ihr eventuell wie man das weg bekommt?

Gruss WulleBier

Content-ID: 172798

Url: https://administrator.de/contentid/172798

Ausgedruckt am: 22.11.2024 um 15:11 Uhr

Dani
Dani 08.09.2011 um 11:44:17 Uhr
Goto Top
Hi WulleBier,
könntest du auch die komplette Batchdatei kurz posten?! Ich möchte eigentlich vermeiden, dass Biber oder bastla ihre Glaskugel auspacken müssen.


Grüße,
Dani
BigWim
BigWim 08.09.2011 um 11:46:14 Uhr
Goto Top
Moin WulleBier,

bei mir ist meist so, dass ich per Echo eine Variable ausgeben möchte. Z. B. so
echo %Hallo%

Wenn aber %Hallo% nicht gefüllt ist, kommt es zu so einer Erscheinung. In diesem Fall einfach mal im verdächtigen Scriptteil ein Echo on einfügen, dann siehst Du genau, welche Zeile / Eintrag dafür verantwortlich ist.

Ohne Dein Script nämlich wird es schwer werden, Dir zu helfen face-wink

Gruß
Markus

[Edit] ich muß einfach lernen, schneller zu tippen ...[/Edit]

[Edit2]
Dafür formatierst Du Deine Kommentare schöner ....
[/Edit2]
60730
60730 08.09.2011 um 11:47:00 Uhr
Goto Top
moin,

nunja...

ohne die Testbätch (die auch noch @echo off benutzt) zu kennen, muß man wieder Rätseln.

  • ein simples echo liefert den Zustand (on/off) zurück

ergo wirst du irgendwo einen Bug drin haben, der für dich so aussehen mag, dass du ein echo %variable% irgendwo stehen hast und die variable leer ist.

Von daher?
Wie würdest du nun dein und unser Problem lösen?

Gruß



Edit
3 Dumme, ein Gedanke
/edit


[Edit] ich muß einfach lernen, schneller zu tippen ...[/Edit]

Nö.... du warst noch schneller als wie meiner einer face-wink

PS:

if not "%kristallkugel%=="" echo %kristallkugel%  
WulleBier
WulleBier 08.09.2011 um 11:49:59 Uhr
Goto Top
Servus,

Entschuldigung, hier das kleine Skript

@echo off 

echo Geben Sie den absoluten Pfad der .txt Datei ein!Achten Sie dabei auf korrekte Eingabe! (z.B. C:\):
          
set /P laufwerk=

echo Geben Sie den vollstaendeigen Pfad des Confluence Line Interface an!
set /P cli= 

:done
cd %laufwerk%

:einlesen
      for /f "eol=; delims=/" %%i in ('Findstr /c:"/" %laufwerk%') do set %%i     
           
             
        
   for /f "usebackq skip=5 eol=# delims=#" %%k in (%laufwerk%) do (  

              call %cli% --action loadFiles --space "%Space%" --title "%title%" --file %%k --replace  
            )

   
    call %cli% --action getPageSource --space "%Space%" --title "%title%" --file "%dirPath%"\SourceCode.txt  
                
        for /f "eol=; tokens=1,2 delims=#" %%i in (%laufwerk%) do (  
                  
                     @echo %%j >> "%dirPath%"\SourceCode.txt    )     
                  
 
:Eof


Hier die Ausgabe dazu :

{children} 
ECHO ist ausgeschaltet (OFF).
ECHO ist ausgeschaltet (OFF).
[DasBuch|Buch2_32x32.png]      
[Client|clientnetwork.png]     
[Technologies|04-technologies.png]     
[product|05-productinfo.png]     
[Inet-news|INET-News_No_7_en_v2.doc]     

Das "ECHO ist ausgeschaltet (OFF) sollte weg.
99045
99045 08.09.2011 um 11:50:52 Uhr
Goto Top
Zitat von @WulleBier:
Wisst ihr eventuell wie man das weg bekommt?

Wenn du vernüftige Angaben liefert, weiß das sicher jemand, so gibt es nur ein "wenig anspruchsvoll".
Jochem
Jochem 08.09.2011 um 11:50:53 Uhr
Goto Top
Moin,

ein "Echo" mit Ausgabeumleitung auf das Null-Device löst das Problem auf jeden Fall. *GG*

Gruß J face-smile chem
60730
60730 08.09.2011 um 11:57:31 Uhr
Goto Top
hmm..

auch auf die Gefahr hin...

@echo off 
:start
cls
:v1
@echo Geben Sie den absoluten Pfad der .txt Datei ein!Achten Sie dabei auf korrekte Eingabe! (z.B. C:\):
          
set /P laufwerk=
@echo %laufwerk%|find ":\" && if not exist %laufwerk% goto start  
:v2
echo Geben Sie den vollstaendeigen Pfad des Confluence Line Interface an!
set /P cli= 
if not exist %cli% goto v2

:done
cd %laufwerk%

:einlesen
      for /f "eol=; delims=/" %%i in ('Findstr /c:"/" %laufwerk%') do set %%i     
                       
        
   for /f "usebackq skip=5 eol=# delims=#" %%k in (%laufwerk%) do (  

              call %cli% --action loadFiles --space "%Space%" --title "%title%" --file %%k --replace  
            )

   
    call %cli% --action getPageSource --space "%Space%" --title "%title%" --file "%dirPath%"\SourceCode.txt  
                
        for /f "eol=; tokens=1,2 delims=#" %%i in (%laufwerk%) do @if not "%%j"=="" @echo %%j>>"%dirPath%"\SourceCode.txt     
                  
 :Eof
<edit>
so da wären ein paar unhybschheiten beseitigt.

u.a bei echo %%j >> -leerzeichen in der log mag ich nicht.
</edit>
userpulsar
userpulsar 08.09.2011 um 11:59:54 Uhr
Goto Top
WulleBier
WulleBier 08.09.2011 um 12:09:44 Uhr
Goto Top
Ahh stimmt. Da die Ausgabe sowieso später zu links werden schreib ich einfach "link" davor !

Danke
WulleBier
WulleBier 08.09.2011 um 12:12:51 Uhr
Goto Top
if not exist %laufwerk%%cli% goto v2
Was machst du hier? %laufwerk% und %cli% sind 2 Verschiedene Pfadangaben: Einmal zu ner .txt aus der gelesen wird und einmal zu ner .bat
60730
60730 08.09.2011 um 12:15:16 Uhr
Goto Top
Zitat von @WulleBier:
if not exist %laufwerk%%cli% goto v2
Was machst du hier? %laufwerk% und %cli% sind 2 Verschiedene Pfadangaben: Einmal zu ner .txt aus der gelesen wird und einmal zu
ner .bat


nunja - das in ein sogenannter Vorschlag, aber du hattest soviele rems in der Datei, da hab ich den Wald vor lauter Bäumen nicht gesehen.

Wird auch nicht mehr vorkommen...
99045
99045 08.09.2011 um 12:21:02 Uhr
Goto Top
Mit den ganzen Fehlern in deinem Script wird das auch nichts werden.

CD braucht einen Parameter, set %%i ist Murks und nach meiner Ansicht sind ein paar Variablen überhaupt nicht definiert.

Vielleicht fängst du mal mit echo on in der ersten Zeile an und machst zwischendurch mal eine pause.
WulleBier
WulleBier 08.09.2011 um 12:37:54 Uhr
Goto Top
Warum sollte set %%i murks sein? Also bei mir fuktionierts. Vielleicht hab ich ja das definieren der Variablen in die Textdatei geschrieben , welche durchgegangen wird schonmal daran gedacht?
BigWim
BigWim 08.09.2011 um 12:43:35 Uhr
Goto Top
Moin WulleBier,

hier wird geprüft, ob die beiden Ziele existieren. Wenn nicht, wird zur erneuten Eingabe aufgefordert, wobei mir die Schreibweise neu ist.

Interessant - werde gleich mal forschen ....

Gruß Markus
60730
60730 08.09.2011 um 13:50:11 Uhr
Goto Top
Moin,

Zitat von @WulleBier:
Warum sollte set %%i murks sein? Also bei mir fuktionierts. Vielleicht hab ich ja das definieren der Variablen in die Textdatei
geschrieben , welche durchgegangen wird schonmal daran gedacht?
  • Weil
18. for /f "eol=; delims=/" %%i in ('Findstr /c:"/" %laufwerk%') do set %%i

das nur unter sehr vornehmen Zeitgenossen und Genossinnen als Murksfrei bezeichnet werden würde.
Aber auch nur, weil die so ein Wort nicht kennen.

gruß
WulleBier
WulleBier 08.09.2011 um 14:07:48 Uhr
Goto Top
Schön gesagt!!!
Leider weiß ich immer noch nicht warum es Murks sein sollte!
99045
99045 08.09.2011 um 14:16:57 Uhr
Goto Top
Ich verstehe gar nicht, wo die ganzen Antworten her kommen, obwohl der Thread doch "gelöst" ist.
bastla
bastla 08.09.2011, aktualisiert am 18.10.2012 um 18:48:13 Uhr
Goto Top
@t-mo
Wenn man sich daran gewöhnt hat, dass "%laufwerk%" eine Textdatei repräsentiert, kann
for /f "eol=; delims=/" %%i in ('Findstr /c:"/" %laufwerk%') do set %%i
durchaus sinnvoll sein (auch wenn ich eher
for /f "eol=; delims=/" %%i in ('Findstr /c:"/" "%laufwerk%"') do set "%%i"
geschrieben hätte): For-Schleife .txt Datei und 3 Variablen speichern

Grüße
bastla
60730
60730 08.09.2011 um 15:03:37 Uhr
Goto Top
Bonjour Bastla face-wink

Zitat von @bastla:
@t-mo
Wenn man sich daran gewöhnt hat, dass "%laufwerk%" eine Textdatei repräsentiert, kann

[OT]
Naaaaja - wenn ich an sowas gewöhne
05. set /P laufwerk=
06.
07. echo Geben Sie den vollstaendeigen Pfad des Confluence Line Interface an!

  • dann war ich wohl wirklich auf dem Holzpfadweg face-wink
Laufwerk;Pfad; Textdatei - vielleicht gewöhne ich mich auch mal daran, Fahriablen so zu benamsen, das man da auf den ersten Blick durchfindet face-wink

Grüße
bastla

retour
pieh-ejdsch
pieh-ejdsch 08.09.2011 um 15:51:45 Uhr
Goto Top
moin,

auch wenn das Thema schon fast erledigt ist...

wenn in der Forschleife nur das zweite Token verwertet werden soll (wenn der erste Teil sowieso uninteressant ist) braucht man nicht das erste Token zur auswertung in der Forschleife angeben. Der Vergleich ob %%i %%j [Edit]ach doch [/Edit] %%i nicht leer ist kann da auch entfallen.
(
for /f "tokens=2 delims=#" %%i in (%laufwerk%) do >>&3 echo %%i  
)3>>"%dirPath%"\SourceCode.txt  
[Edit %%i statt %%j gesetzt ]

wenn im zweiten Token NUR Leerzeichen sind müsste ja eh der Platzhalter \ ans echo ran

Gruß Phil
bastla
bastla 08.09.2011 um 16:00:05 Uhr
Goto Top
... wobei noch die Frage offen wäre, ob allenfalls bei leerem "%%j" die Ausgabe einer Leerzeile gewünscht ist - dann:
(for /f "eol=; tokens=1,2 delims=#" %%i in (%laufwerk%) do echo\%%j)>>"%dirPath%"\SourceCode.txt
Grüße
bastla
pieh-ejdsch
pieh-ejdsch 08.09.2011 um 16:10:40 Uhr
Goto Top
hach jetzt hab ich mich in der Theorie vertan.

wenn nur das zweite token abgefragt wird dann ist es ja %%i und nicht %%j

Gruß Phil
WulleBier
WulleBier 08.09.2011 um 16:47:44 Uhr
Goto Top
Also hier mal der Aufbau von meiner Textdatei. Vielleicht wird der dazugehörige Batch nun verständlich
;Beschreibung
;Beschreibung
;Beschreibung
Erste 3 Zeilen sind kommentarzeilen !

/Space=Test
/title=test1

Hier werden variable Space und title gesetzt
"C:\Programme\Projektordner\01_Projekt1\Buch2_32x32.png"#[DasBuch|^Buch2_32x32.png]   
"C:\Programme\Projektordner\01_Projekt1\client_network.png"#[Client|^client_network.png]  
"C:\Programme\Projektordner\01_Projekt1\04-technologies.png"#[Technologies|^04-technologies.png]  
"C:\Programme\Projektordner\01_Projekt1\05-productinfo.png"#[product|^05-productinfo.png]  
"C:\Programme\Projektordner\01_Projekt1\INET-News_No_7_en_v2.doc"#[Inet-news|^INET-News_No_7_en_v2.doc]  

Hier werden erst mithilfe der Pfade, Dateien auf eine wiki geladen (eol=#)
Dann wird der Rest in eine Datei gefügt und als "Content an die dazugehörige Wiki-Page gehängt damit die Attachements gleich verlinkt sind!
[alias|^verlinkung] ist Confluence-Notation (Confluence = name der Wiki-Software)
Hier noch das (endlich und dank eurer Hilfe face-smile ) funktionierende Skript dazu^^
@echo off 

echo Geben Sie die .txt Datei ein!Achten Sie dabei auf korrekte Eingabe!          
set /P textdatei=

echo Geben Sie das Confluence Line Interface an!
set /P cli= 



:einlesen
      
  
   for /f "eol=; delims=/" %%i in ('Findstr /c:"/" %textdatei%') do set %%i     
           
   
   call %cli% --action getPageSource --space %Space% --title %title% --file "%dirPath%"\SourceCode.txt            
        
   for /f "usebackq skip=5 eol=# delims=#" %%k in (%textdatei%) do (  

              call %cli% --action loadFiles --space "%Space%" --title "%title%" --file %%k --replace  
            ) 
 
   
        :getSource         
        
                   
        for /f "eol=; skip=5 tokens=1,2 delims=#" %%i in (%textdatei%) do (@if not "%%j"=="" @echo %%j>>"%dirPath%"\SourceCode.txt)    
                  
  
              call %cli% --action storePage --space "%space%" --title "%title%" --file "%dirPath%"\SourceCode.txt  
 
:Eof