mobby83
Goto Top

Batch: Mehrzeiligen Text in eine Text-Datei schreiben (Win7 64)

Hallo zusammen,

ich habe eine ältere Batch, die eine Ordnerstruktur erstellt. Dieses Batch soll nun zusätzlich eine "DirInfo.txt" erstellen.
Die Ordner werden in einer Subroutine erstellt und ich möchte diese um das Erstellen der DirInfo erweitern.

echo off
setlocal EnableDelayedExpansion

:MAIN
set UFOLDER=C:\Test
set UFOLDERDES="Inhalt$$hier folgt$nun die$Beschreibung$und mehr"  
call :SUB

...

:SUB
echo Aufruf Subroutine zum Erstellen der Ordner %UFOLDER%\%FOLDER%
set UFOLDERDES=!UFOLDERDES:$=^) ^&^& ^(echo.!
  if exist "%UFOLDER%" goto :SUBFOLDERTEST  
    echo Unterlagenordner wird erstellt unter "%UFOLDER%"  
    md "%UFOLDER%"  
    set INFOFILE="%UFOLDER%\DirInfo.txt"  
    echo schreiben des InfoFile %INFOFILE%
    echo (%UFOLDERDES%) >> %INFOFILE%
    goto :EOF
:SUBFOLDERTEST
  if defined FOLDER goto :SUBFOLDERTEST2
    echo kein anzulegendes Unterverzeichnis.
    goto :EOF
:SUBFOLDERTEST2
  if exist "%UFOLDER%\%FOLDER%" goto :SUBFOLDERTEST3  
    echo Ordner %FOLDER% wird erstellt
    md "%UFOLDER%\%FOLDER%"  
:SUBFOLDERTEST3
  set INFOFILE="%UFOLDER%\%FOLDER%\DirInfo.txt"  
  if not exist %INFOFILE% goto :SUBFOLDERTEST4
    echo vorhandenes Infofile %INFOFILE% wird geöscht
    del %INFOFILE%
:SUBFOLDERTEST4
  echo schreiben des InfoFile %INFOFILE%
  echo %FOLDERDES% >> %INFOFILE%
  echo Ende der Subroutine
goto :EOF 

Ich habe mich schon ein wenig belesen und konnte noch keine Lösung für mein Problem finden
Ich würde es gern ähnlich wie hier lösen
Batch - Variable mit Zeilenumbruch

Leider komme ich nicht drauf, was ich anpassen muss, damit mein Text über mehrere Zeilen in eine Textdatei schreiben kann.
(die vielen Sprünge sind in der Sub, da die "(" ")" immer zu "Syntaxfehler" führten)

Könnt Ihr mir bitte unter die Arme greifen?
Viele Grüße und Danke, Mobby

Content-ID: 252003

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

Ausgedruckt am: 25.11.2024 um 18:11 Uhr

SeaStorm
Lösung SeaStorm 15.10.2014, aktualisiert am 16.10.2014 um 08:05:20 Uhr
Goto Top
@echo off

setlocal EnableDelayedExpansion
REM NLM _BENOETIGT_ zwingend die Leer-Zeilen darunter!
set NLM=^


set NL=^^^%NLM%%NLM%^%NLM%%NLM%


set UFOLDER=C:\TEST

set UFOLDERDES=Zeile1%NL%Zeile2%NL%Zeile3
   
set INFOFILE=%UFOLDER%\DirInfo.txt
echo !UFOLDERDES! >> %INFOFILE% 

pause

beachte die finale ECHO Zeile und die Ausrufezeichen

Und lass die Anführungsstriche bei den SETs weg
Treemanhero98
Treemanhero98 15.10.2014 um 18:46:45 Uhr
Goto Top
@echo off
echo Erste Zeile > Beispiel.txt
echo Zweite Zeile >> Beispiel.txt
echo Dritte Zeile >> Beispiel.txt
echo Vierte Zeile >> Beispiel.txt
exit
Suchst du sowas ??

Hoffe das Ich helfen konnte

LG

Treemanhero98
mobby83
mobby83 16.10.2014 um 08:09:26 Uhr
Goto Top
Danke, das funktioniert.
Kannst du mir ggf. noch kurz erläutern, was NLM und NL machen.(?) Im Grunde steht doch bei NL = (8x ^) - warum kann ich das nicht gleich so schreiben? Oder geht es um die Lehrzeile die mit NLM durch das ^ verknüpft wird?
mobby83
mobby83 16.10.2014 um 08:10:56 Uhr
Goto Top
die mehreren Echobefehle scheiden aus, da ich nur einen Wert (Variable) in die Sub übergeben kann, ohne die Batch komplett neu zu verfassen (das widerstrebt mir face-smile)
SeaStorm
SeaStorm 16.10.2014 um 08:12:40 Uhr
Goto Top
Ja es geht um die Leerzeilen in NLM