Batch Leere zeile entfernen

LopoTRI

Grünschnabel
Hallo. Ich möchte mit meiner batch per drag & drop (zwischen 2 und 6 dateien) eine datei erstellen, die die namen der d´n´d-dateien beinhaltet, jedoch zum schluss keine neue leere zeile enthält.
1. Beispiel: Ich habe aaa_Disk1.zip, aaa_Disk2.zip. Die Datei sollte "aaa.m3u" heissen und der inhalt:
  1. aaa_Disk1.zip
  2. aaa_Disk2.zip
Also keine 3. leere zeile.

2. Beispiel: Ich habe bbb_Disk1.zip, bbb_Disk2.zip, bbb_Disk3.zip. Die Datei sollte "bbb.m3u" heissen und der inhalt:
  1. bbb_Disk1.zip
  2. bbb_Disk2.zip
  3. bbb_Disk3.zip
Also keine 4. leere Zeile.

Meine batch sieht so aus:
Code:
@echo off

set "path=../_multidisk/"
set "filename=%~nx1"
set "gamename=%filename:_Disk=" & set "rest=%"
for %%a in (%*) do echo %path%%%~nxa>>"%gamename%(MD).m3u"


Die datei wird korrekt erstellt und der inhalt auch, jedoch habe ich zum schluss eine neue leere Zeile:

1. Beispiel:
  1. aaa_Disk1.zip
  2. aaa_Disk2.zip
Sieht dann so aus.
Ich hab 3 nächte schon das internet durchforstet wie ich z.B die letzte leere zeile löschen kann mit einem code der 4x so lang ist wie mein eigentlicher code, jedoch hat nichts funktioniert.

Für jede Hilfe wäre ich echt dankbar.
 
Code:
@echo off

set "path=../_multidisk/"
set "filename=%~nx1"
set "gamename=%filename:_Disk=" & set /p "rest=%"
for %%a in (%*) do echo %path%%%~nxa>>"%gamename%(MD).m3u"
Ungetestet!
Von hier: Windows batch: echo without new line

Oder so:
Code:
@echo off

set "path=../_multidisk/"
set "filename=%~nx1"
set "gamename=%filename:_Disk=" & set "rest=%"
for %%a in (%*) do echo|set /p %path%%%~nxa>>"%gamename%(MD).m3u"


EDIT: GRMPF..... schreibt dann alles in eine Zeile
Ist auch nicht das was du willst.
Vielleicht so:
1) Stelle Anzahl Dateien fest --> batch file - counting number of files in folder and storing in a variable
2) Lass nen Zähler mitlaufen
3) Erst bei der letzten Datei (Zähler=Anzahl) machst du das mit set /p
 
Zuletzt bearbeitet:
Danke für. Das mit set /p bemerkte ich auch, dass er alles hintereinander schreibt.
Hab es hin bekommen, auch wenns über umwege geht.
Mein script das jetzt funktioniert sieht so aus:
Code:
@echo off
setlocal
set "path=../_multidisk/amiga/"
set "str1=%~nx1"

set "file1=%str1:_Dis=" & set "rest1=%"

if ["%~nx3"]==[""] (
    goto 2Disks
    )else if ["%~nx4"]==[""] (
        goto 3Disks
        )else if ["%~nx5"]==[""] (
            goto 4Disks
            )else if ["%~nx6"]==[""] (
                goto 5Disks
                )else if ["%~nx7"]==[""] goto 6Disks
goto :eof

:2Disks
echo %path%%~nx1 > "%file1%(MD).m3u"
echo | set /p=%path%%~nx2 >> "%file1%(MD).m3u"
goto :eof

:3Disks
echo %path%%~nx1 > "%file1%(MD).m3u"
echo %path%%~nx2 >> "%file1%(MD).m3u"
echo | set /p=%path%%~nx3 >> "%file1%(MD).m3u"
goto :eof

:4Disks
echo %path%%~nx1 > "%file1%(MD).m3u"
echo %path%%~nx2 >> "%file1%(MD).m3u"
echo %path%%~nx3 >> "%file1%(MD).m3u"
echo | set /p=%path%%~nx4 >> "%file1%(MD).m3u"
goto :eof

:5Disks
echo %path%%~nx1 > "%file1%(MD).m3u"
echo %path%%~nx2 >> "%file1%(MD).m3u"
echo %path%%~nx3 >> "%file1%(MD).m3u"
echo %path%%~nx4 >> "%file1%(MD).m3u"
echo | set /p=%path%%~nx5 >> "%file1%(MD).m3u"
goto :eof

:6Disks
echo %path%%~nx1 > "%file1%(MD).m3u"
echo %path%%~nx2 >> "%file1%(MD).m3u"
echo %path%%~nx3 >> "%file1%(MD).m3u"
echo %path%%~nx4 >> "%file1%(MD).m3u"
echo %path%%~nx5 >> "%file1%(MD).m3u"
echo | set /p=%path%%~nx6 >> "%file1%(MD).m3u"
goto :eof

Nochmals danke...

P.S: Wegen 1 leerzeile wird aus einem einzeiler ein buch... ;-P
 

Neue Beiträge

Zurück