dateiname aus variable löschen (windows batch)

maxxxis

Newbie
Registriert
Mai 2024
Beiträge
7
hallo, bräuchte hilfe

habe variable (%%i) wo drinnen steht "d:\test.mp4"
brauche jetzt aber eine variable wo drinnen stehen soll "d:\test.mp4_original"
sodass ich die datei d:\test.mp4_original" mit del löschen kann

neuevariablemitneuendateiname=%%i&"_original"

del neuevariablemitneuendateiname

funktioniert leider nicht so, help!?
 
Aus dem Internet:
Bash:
set str1=Good
set str2=Morning
set str_new=%str1% %str2%
Ergebnis: "Good Morning"
 
ok das soweit klar, funktioniert auch, möchte jetzt aber dein str_new also meine datei die in str_new steht löschen?

del str_new

funktioniert ja nicht
Ergänzung ()

die frage ist, ist %%i wo der dateiname drin steht auch der datentyp der einfach so verbunden werden kann mit einem string und dann quasi der string einfach nicht der datentyp zum löschen ist?
 
Zuletzt bearbeitet:
Um an den Inhalt einer Variable ranzukommen (für del), musst du den Variablennamen zwischen zwei Prozentzeichen setzen. Hier also %%%i%.

Deine Frage habe ich nicht verstanden. Total konfus und keine Satzzeichen. Da hab ich auch keinen Bock, das zu entziffern.
 
Poste bitte dein bisheriges Skript in [code][/code] Tags. Batch is a bitch und das zeigt sich massiv in der Auflösung von Variablen, insbesondere innerhalb von Schleifen.
Stichwort: EnableDelayedExpansion

%%i deutet auf eben so eine Schleife hin. Wenn du nun innerhalb dieser Schleife mit SET einen neuen Dateinamen zusammenbastelst, musst du im weiteren Verlauf eben diese neue Variable mit !Variablen! referenziert. Daher bitte das ganze Skript zeigen, dann können wir genau solche Fehler sehen und beheben.
 
ja ist in einer schleife

Code:
@echo off cls
dir /s /b *.mp4 > mp4s.txt
for /f "delims=" %%i in (mp4s.txt) do (
echo aktuelle datei: %%i
exiftool "-CreateDate=2000:01:01 00:00:00" "-ModifyDate=2000:01:01 00:00:00" "-TrackCreateDate=2000:01:01 00:00:00" "-TrackModifyDate=2000:01:01 00:00:00" "-MediaCreateDate=2000:01:01 00:00:00" "-MediaModifyDate=2000:01:01 00:00:00" "-DateTimeOriginal=2000:01:01 00:00:00" "-CreationDate=2000:01:01 00:00:00" "%%i"

set str1=%%i
set str2=_original
set stringnew=%str1%*%str2%
echo %stringnew%

echo.
echo.
)
del mp4s.txt
goto eof
:eof
 
Du kannst das Erzeugen der _original Dateien einfach mit dem Parameter -overwrite_original verhindern.
 
was? nein, ich will nichts überschreiben verhindern, der exiftool.exe befehl erzeugt eine datei mit zusatz "_original" also test.mp4_original, die ich in der schleife gleich nachm erzeugen wieder killen qusi....sonnt braucht der ganze ordner gleich mal 50gb die ich nicht habe
 
Schreib ich Chinesisch? Genau das kannst du mit Paramter -overwrite_original verhindern. Dann werden die Backupdateien nicht von exiftool erzeugt.
 
aaaah yes! it works! :) danke evil und den anderen thx!
 
  • Gefällt mir
Reaktionen: Raijin
Der Vollständigkeit halber:

Wenn du in batch innerhalb einer Schleife Variablen änderst und abrufst, musst du das so machen:

Code:
SETLOCAL EnableDelayedExpansion

for %%i ... do (
   set str1=%%i
   set str2=_original
   set stringnew=!str1!!str2!
   echo !stringnew!
)

In Schleifen veränderte Variablen muss man mit !variable! statt %variable% abrufen und am Anfang des Skripts die verzögerte Evaluierung der Variablen aktivieren (Zeile 1)

Das liegt daran wie batch interpretiert wird.
 
  • Gefällt mir
Reaktionen: s1ave77
In Schleifen veränderte Variablen muss man mit !variable! statt %variable% abrufen und am Anfang des Skripts die verzögerte Evaluierung der Variablen aktivieren (Zeile 1)
aaah okaay, verstehe, ja gut zu wissen danke, is echt ne bitch 🙃
 
  • Gefällt mir
Reaktionen: Raijin
Und nicht Variablen %v% mit 'Laufzeitvariablen' %%v verwechseln. Letztere haben nur innerhalb des Loops Bestand und müssen in eine Variable gespeichert werden, wenn sie später weitergenutzt werden sollen.
 
  • Gefällt mir
Reaktionen: Raijin
Und nicht Variablen %v% mit 'Laufzeitvariablen' %%v verwechseln
ja
thank you 6.gif
 
  • Gefällt mir
Reaktionen: s1ave77
Zurück
Oben