Batchdatei gesucht, Datei nur löschen, wenn 2 Dateitypen vorhanden sind

  • Ersteller Ersteller BaserDevil
  • Erstellt am Erstellt am
B

BaserDevil

Gast
Hallo,

es gibt einen Ordner voller Bilder. Von manchen gibt es eine .jpg und eine .nec. Wenn beide Dateitypen vorhanden sind, sollen beide bleiben. Wenn von einem Bild nur eine .jpg vorhanden ist, soll diese .jpg gelöscht werden.

Nach Dateiendung suchen und löschen bekäme man bestimmt noch hin. Nur hier muß ja irgendwie den Dateinamen in einen string speichern und vergleichen und wenn eine Endung fehlt, erst dann löschen.

Wäre jemand so nett und hilft mir?
 
Hast Du denn schon irgendetwas angefangen, das Du zeigen kannst?
Oder erwartest Du eine Fertiglösung an die Bordsteinkante? ;-)

PS: Im Programmieren-Forum sind Deine Erfolgschancen auf eine passende Antwort größer.
 
Code:
for /f "delims=" %i in ('dir /b *.jpg') do if exist "%~ni.nec" (echo "%~ni.nec" vorhanden) else echo del "%~ni.jpg"
 
Hallo,

ich habe davon keinen Schimmer, deshalb frage ich Euch, ob mir jemand helfen kann.
Wenn ich irgendwelche Codeschnipsel aus dem Netz zusammenkopiere wird das nicht funktinieren, weil ich nicht weis was die Codes genau machen.

Ich habe Deinen Code, Entilzha, in eine .bat kopiert und diese Datei den Ordner mit den Bilddateien gespeichert. Die Bilder sind nochmal gesichert. Es passiert leider nichts. Das CMD Fenster bringt folgende Meldung. Könntest Du nochmal drüberschauen? Wäre nett.

Code:
C:\test>test.bat
Die folgende Verwendung des Pfadoperators zur Ersetzung eines Batchparameters
ist ungültig: %~ni.nec" vorhanden) else echo del "%~ni.jpg"


Geben Sie CALL /? oder FOR /? ein, um herauszufinden, welche Formate gültig
sind.
"test.bat" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

C:\test>for /f "delims=" ~ni.nec" (echo ".jpg') do if exist "%~ni.nec" (echo "%~
ni.nec" vorhanden) else echo del "%~ni.jpg"

C:\test>

In der Variablen %i wird doch der Dateiname gespeichert. Oder? Was befindet sich in %~ni ?

Wenn das hier im falschen Unterforum gelandet ist, sorry, dann bitte verschieben, falls das jemanden stört.
 
Zuletzt bearbeitet von einem Moderator:
Ja mein Code von oben war für die CMD Console, als Batch muss du die % doppelt haben...
Hier noch mal der Code als Batchdatei:
Code:
@echo off & title %~n0
cls

set "Verzeichnis=%~dp0"
set "Typ=jpg"
set "Typ2=nec"

pushd %Verzeichnis% || goto :eof

for /f "delims=" %%i in ('dir /b /a-d "*.%Typ%"') do (
    if exist "%%~ni.%Typ2%" (
        echo "%%~ni.%Typ2%" vorhanden ^& "%%~ni.%Typ%" wird nicht geloescht!
    ) else (
        echo del "%%~ni.%Typ%"
    )
)
pause
Als Batchdatei abspeichern und in selben Verzeichnis kopieren wo es verarbeitet werden soll.
Wenn es so funktioniert wie es soll, muss du das echo in Zeile 14 vor del einfach entfernen, mit dem echo wird nur angezeigt was es tut.

Edit:
Zu %%~ni es wird der Dateiname ohne Dateiendung ausgegeben, möchte man zb. nur die Dateiendung, dann verwendet man %%~xi usw. usf. ...mehr dazu in der Hilfe zu for per for /?
 
Zuletzt bearbeitet:
Hallo,

allerbesten Dank !!! :)

Das funktioniert genauso wie gewünscht.

Hätte ich nie hinbekommen. Nochmal Danke.
 
Zurück
Oben