Batch - Einfügen an definierter Stelle einer txt
Hallo
ich bin neu hier, habe keine bis wenig Ahnung vom Batch-Programmieren und würde gerne folgendes erreichen:
Ich habe eine Textdatei [test.txt] und ein kleine Batch-Anweisung, welche mir alle Bilddateien inkl. Pfad aus einem bestimmten Ordner listet. Mein Problem liegt darin, dass ich es nicht hinbekomme, dass die Bild-Pfad-Liste an eine definierte Stelle der [test.txt] geschrieben wird.
Die Zeile zu bestimmen, ab welcher eingefügt werden soll, kann entweder über eine feste Zeilennummer [Zeile 6] oder über ein Suchen-Ersetzen [###] erfolgen.
Ich hoffe meine Ausführungen sind verständlich.
Vielen Dank schon mal im Voraus.
Gruß Hannes
Batch-Anweisung
TXT vor dem Ausführen
TXT nach dem Ausführen
Gewünschtes Ergebnis
ich bin neu hier, habe keine bis wenig Ahnung vom Batch-Programmieren und würde gerne folgendes erreichen:
Ich habe eine Textdatei [test.txt] und ein kleine Batch-Anweisung, welche mir alle Bilddateien inkl. Pfad aus einem bestimmten Ordner listet. Mein Problem liegt darin, dass ich es nicht hinbekomme, dass die Bild-Pfad-Liste an eine definierte Stelle der [test.txt] geschrieben wird.
Die Zeile zu bestimmen, ab welcher eingefügt werden soll, kann entweder über eine feste Zeilennummer [Zeile 6] oder über ein Suchen-Ersetzen [###] erfolgen.
Ich hoffe meine Ausführungen sind verständlich.
Vielen Dank schon mal im Voraus.
Gruß Hannes
Batch-Anweisung
@echo off
FOR /R ".\" %%F IN (*.jpg *.png *.bmp) DO (
echo %%F >> .\test.txt
)
TXT vor dem Ausführen
DIESER
TEXT
STEHT
AM
ANFANG
### Hier soll die Ausgabe der Anweisung stehen. Die Anzahl der Zeilen kann variieren ###
DIESER
TEXT
STEHT
AM
ENDE
TXT nach dem Ausführen
DIESER
TEXT
STEHT
AM
ANFANG
### Hier soll die Ausgabe der Anweisung stehen. Die Anzahl der Zeilen kann variieren ###
DIESER
TEXT
STEHT
AM
ENDE C:\test\rge.jpg
C:\test\sew.jpg
C:\test\uiz.jpg
C:\test\wer.jpg
Gewünschtes Ergebnis
DIESER
TEXT
STEHT
AM
ANFANG
C:\test\rge.jpg
C:\test\sew.jpg
C:\test\uiz.jpg
C:\test\wer.jpg
DIESER
TEXT
STEHT
AM
ENDE
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 73889368729
Url: https://administrator.de/contentid/73889368729
Ausgedruckt am: 22.11.2024 um 03:11 Uhr
7 Kommentare
Neuester Kommentar
@echo off
set "quelle=D:\test.txt"
set "ziel=D:\testneu.txt"
>"%ziel%" (for /f "tokens=1,* delims=:" %%a in ('findstr /n "^" "%quelle%"') do (
echo.%%b
if "%%b" == "ANFANG" dir /b /s /a-d *.jpg *.png *.bmp
))
Oder PS
☕
Wenn sich die Anzahl Kopf- und Fußzeilen in Grenzen hält, wäre es auch denkbar sie hart im Code zu haben.
Steffen
@echo off &setlocal
set "file=test.txt"
>"%file%" (
echo(DIESER
echo(TEXT
echo(STEHT
echo(AM
echo(ANFANG
)
>>"%file%" dir /a-d /b /s *.jpg *.png *.bmp
>>"%file%" (
echo(DIESER
echo(TEXT
echo(STEHT
echo(AM
echo(ENDE
)
Steffen
@echo off
set "quelle=D:\test.txt"
set "ziel=D:\testneu.txt"
>"%ziel%" (for /f "tokens=1,* delims=:" %%a in ('findstr /n "^" "%quelle%"') do (
echo.%%b
if "%%b" == "ANFANG" (
for /f "delims=" %%c in ('dir /b /s /a-d *.jpg *.png *.bmp') do echo.^<img class="mySlides" src="%%c" style="width:100%%"^>
)
))
@11078840001 sonst gibt's kein Prozentzeichen in der Ausgabe.
@zerooo
Um das vernünftig zu scripten, ist Batch nix. Aber naja ...
Klingt ein bisschen wie https://www.w3schools.com/w3css/w3css_slideshow.asp
Grundsätzlich solltest du File URLs aus den Windows Pfaden machen und die Ausgabe in UTF-8 mit einem Mindestmaß an URL Encoding vornehmen.
template.html
Batch Code:
Mit Edge getestet, funktioniert das damit auch für Dateinamen mit Sonder- und Multibytezeichen, bspw.
Steffen
style="width:100%%"
@zerooo
Um das vernünftig zu scripten, ist Batch nix. Aber naja ...
Klingt ein bisschen wie https://www.w3schools.com/w3css/w3css_slideshow.asp
Grundsätzlich solltest du File URLs aus den Windows Pfaden machen und die Ausgabe in UTF-8 mit einem Mindestmaß an URL Encoding vornehmen.
template.html
<!DOCTYPE html>
<html lang="en">
<title>W3.CSS</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<style>
.mySlides {display:none;}
</style>
<body>
<h2 class="w3-center">Manual Slideshow</h2>
<div class="w3-content w3-display-container">
<button class="w3-button w3-black w3-display-left" type="button" onclick="plusDivs(-1)">❮</button>
<button class="w3-button w3-black w3-display-right" type="button" onclick="plusDivs(1)">❯</button>
</div>
<script>
var slideIndex = 1;
showDivs(slideIndex);
function plusDivs(n) {
showDivs(slideIndex += n);
}
function showDivs(n) {
var i;
var x = document.getElementsByClassName("mySlides");
if (n > x.length) {slideIndex = 1}
if (n < 1) {slideIndex = x.length}
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
x[slideIndex-1].style.display = "block";
}
</script>
</body>
</html>
Batch Code:
@echo off&setlocal DisableDelayedExpansion
set "template=template.html"
set "out=slideshow.html"
set "insert_after=<div class="w3-content w3-display-container">"
setlocal EnableDelayedExpansion&>nul chcp 65001
<"!template!" >"!out!" (for /f %%i in ('type "!template!"^|find.exe /c /v ""') do for /l %%j in (1 1 %%i) do (
set "line="&set /p "line="&echo(!line!&if "!line!"=="!insert_after!" (
setlocal DisableDelayedExpansion&for /r %%k in (*.jpg *.png *.bmp) do (
set "url=%%~k"&setlocal EnableDelayedExpansion&set "url=!url:%%=%%25!"&set "url=!url: =%%20!"&set "url=!url:#=%%23!"
echo( ^<img class="mySlides" src="file:///!url:\=/!" alt="" style="width:100%%"^>&endlocal
)
endlocal
)))
Mit Edge getestet, funktioniert das damit auch für Dateinamen mit Sonder- und Multibytezeichen, bspw.
~}{`_^][@=;.-,+)('&%$# !.png
😀𐍈𤭢€Яßµ³ abc123.png
Steffen