Textdateien aus Dateinamen erstellen
Hallo,
Ich habe in einem Ordner mehrere Videodateien und möchte nun eine .bat Datei haben,
die jeweils zwei leere Textdateien mit dem gleichen Dateinamen und einem Zusatz erstellt.
Ausgang sind also die "videoname XYZ.wmv" Dateien
und dazu soll dann immer
"videoname XYZ zusatz1.txt"
"videoname XYZ zusatz2.txt"
hinzukommen
Die Namen sind Beispiele und müssen dann noch anpassbar sein.
Wäre für eine Lösung dankbar.
MfG
Ich habe in einem Ordner mehrere Videodateien und möchte nun eine .bat Datei haben,
die jeweils zwei leere Textdateien mit dem gleichen Dateinamen und einem Zusatz erstellt.
Ausgang sind also die "videoname XYZ.wmv" Dateien
und dazu soll dann immer
"videoname XYZ zusatz1.txt"
"videoname XYZ zusatz2.txt"
hinzukommen
Die Namen sind Beispiele und müssen dann noch anpassbar sein.
Wäre für eine Lösung dankbar.
MfG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 91366
Url: https://administrator.de/forum/textdateien-aus-dateinamen-erstellen-91366.html
Ausgedruckt am: 17.02.2025 um 01:02 Uhr
1 Kommentar
Welche OS-Version? cmd.exe oder command.com?
0.) Der entscheidende Trick zur Erzeugung einer leeren Datei ist, entweder ein »touch dateiname« aus den Unix-Tools zu verwenden, oder die immer leere DOS-Systemdatei zu kopieren »copy /b nul: dateiname«. Das /b ist korrekt, aber entbehrlich. Wenn die Leerdatei eine Leerzeile enthalten soll bzw. darf, kannst Du auch »echo. >dateiname« verwenden. GGf. erstellst Du einfach selber ein (leeres) Template, das Du als Kopiervorlage verwendest. Ansonsten:
help for
help copy
Und Du machst es Dir durch Verwendung der lästigen Arbeitsbeschaffungsmaßnahme »Völlig sinnfreie Leerzeichen in Dateinamen und Pfaden anstatt konventioneller GroßKleinSchreibung, '.', '-' oder notfalls '_'« nur unnötig schwer. Bei dieser einfachen Aufgabe schlägt das Problem glücklicherweise noch nicht in voller Bosheit zu.
1.) Wozu bat? Das ist (für cmd.exe) fix in die Kommandozeile eingegeben:
Wie immer hilft das Powertoy cmd-here ab, jahrelang mit cd-Tab rumhampeln zu müssen, um ins gefragte Zielverzeichnis zu kommen.
2.) Bat wird erst interessant, wenn Du bereits existierende .txt nicht überschreiben willst und auch nicht mit tausend Abfragen genervt werden möchtest, daß Du es nicht willst. Leider kennt das copy von cmd.exe nur ein force (/y), während das /-y nicht als leider rein fiktives /n verstanden werden darf, und es kennt leider auch keine verbose-Option:
help if
Mit Hang zu Masochismus kann man das noch elegant Verschachteln. Das ist aber nur der Lesbarkeit und Verarbeitungsgeschwindigkeit abträglich und erfordert Popelei.
3.) Wellnessabteilung:
0.) Der entscheidende Trick zur Erzeugung einer leeren Datei ist, entweder ein »touch dateiname« aus den Unix-Tools zu verwenden, oder die immer leere DOS-Systemdatei zu kopieren »copy /b nul: dateiname«. Das /b ist korrekt, aber entbehrlich. Wenn die Leerdatei eine Leerzeile enthalten soll bzw. darf, kannst Du auch »echo. >dateiname« verwenden. GGf. erstellst Du einfach selber ein (leeres) Template, das Du als Kopiervorlage verwendest. Ansonsten:
help for
help copy
Und Du machst es Dir durch Verwendung der lästigen Arbeitsbeschaffungsmaßnahme »Völlig sinnfreie Leerzeichen in Dateinamen und Pfaden anstatt konventioneller GroßKleinSchreibung, '.', '-' oder notfalls '_'« nur unnötig schwer. Bei dieser einfachen Aufgabe schlägt das Problem glücklicherweise noch nicht in voller Bosheit zu.
1.) Wozu bat? Das ist (für cmd.exe) fix in die Kommandozeile eingegeben:
> for %s in (*.wmv) do copy nul: "%~ns zusatz1.txt"
<Pfeil hoch>, 5x<Pfeil links>, <Backspace>, 2, <Return>
Wie immer hilft das Powertoy cmd-here ab, jahrelang mit cd-Tab rumhampeln zu müssen, um ins gefragte Zielverzeichnis zu kommen.
2.) Bat wird erst interessant, wenn Du bereits existierende .txt nicht überschreiben willst und auch nicht mit tausend Abfragen genervt werden möchtest, daß Du es nicht willst. Leider kennt das copy von cmd.exe nur ein force (/y), während das /-y nicht als leider rein fiktives /n verstanden werden darf, und es kennt leider auch keine verbose-Option:
help if
@for %%s in (*.wmv) do @(
echo "%%~ns zusatz1.txt"
if not exist "%%~ns zusatz1.txt" copy /b nul: "%%~ns zusatz1.txt"
echo "%%~ns zusatz2.txt"
if not exist "%%~ns zusatz2.txt" copy /b nul: "%%~ns zusatz2.txt"
)
Mit Hang zu Masochismus kann man das noch elegant Verschachteln. Das ist aber nur der Lesbarkeit und Verarbeitungsgeschwindigkeit abträglich und erfordert Popelei.
3.) Wellnessabteilung:
::REM %%s videoname
::REM %%t XYZ
::REM %%u wmv
@for /f "tokens=1,2,3 delims=. " %%s in ('dir /b *.wmv') do @(
::REM Leerzeichen in »videoname XYZ.wmv« durch ».« ersetzen
rename "%%s %%t.wmv" %%s.%%t.wmv
::REM touch videoname.XYZ.Zusatz.txt
echo %%s.%%t.zusatz1.txt
if not exist %%s.%%t.zusatz1.txt copy /b nul: %%s.%%t.zusatz1.txt
echo "%%s.%%t.zusatz2.txt"
if not exist "%%s.%%t.zusatz2.txt copy /b nul: %%s.%%t.zusatz2.txt
)