Batch-SCript nummeriert Bilder durch

Diskutiere Batch-SCript nummeriert Bilder durch im Programmierung Forum im Bereich Software Forum; Die anderen Rechtschreibfehler in seinen Posts habe ich ja schon reichlich toleriert, aber "lehr" tut mir weh, da kriege ich Gehirnrheuma :wacko...
automatthias

automatthias

vernunftgeplagt
Mitglied seit
21.04.2006
Beiträge
8.664
:D ...wenn ich hier die (zumeist erschreckend weit verbreitete) schlechte Rechtschreibung anmahne, dann werde ich immer gerüffelt, ich solle nicht so kleinlich sein... :blush

Ich habe das aber sowieso aufgegeben und mich damit abgefunden, dass in diesem (und fast allen anderen) Forum ein unterirdisch schlechtes Deutsch vorherrscht. Gegen Windmühlen kämpft Don Quixote vergebens.
Die anderen Rechtschreibfehler in seinen Posts habe ich ja schon reichlich toleriert, aber "lehr" tut mir weh, da kriege ich Gehirnrheuma :wacko
zumal er das konsequent falsch schreibt, und nicht nur aus Versehen.
 
P

Palladin007

Threadstarter
Mitglied seit
30.07.2011
Beiträge
159
Sorry für die Fehler^^
Ich hab ziemlich schnell geschrieben, da übersehe ich oft irgendwelche Fehler.


%1 ist ein so genannter Positionsparameter, d.h. den kann man nicht innerhalb des Skripts belegen, sondern der muss beim Aufruf des Skripts mit übergeben werden.
Also, angenommen, Dein Skript heißt "nummerieren.cmd", dann wäre beim Aufruf "nummerieren 1.jpg 2.jpg 3.jpg" der Inhalt von %1 die Zeichenkette 1.jpg.
das hab ich versucht, aus dem Programm von Jimmy1 möglichst passend auf mein Programm zu übernehmen. Ich habe mit For-Schleifen ja noch nicht so viel Erfahrung, weswegen ich immer noch eine Vorlage brauche.
Hier nochmal der Ausschnitt, an dem ich mich orientiert hab:

Jimmy1 schrieb:
for %%S in (%InputVar%) do call :CompNames %%S
goto NxtPart1
::
:CompNames
if /I "%1"=="%DefName1%" set /A MatchCnt+=1
if /I "%1"=="%DefName2%" set /A MatchCnt+=1
if /I "%1"=="%DefName3%" set /A MatchCnt+=1
die Zeile "set dat%varname%="%1" macht in dem geschilderten Zusammenhang m.E. keinen Sinn.
Stimmt, das macht es ein wenig kompliziert, gibt aber die Möglichkeit, diese Wörter, die nicht dem Muster entsprechen, noch in der selben bat-Datei zu verarbeiten. Aber da ich eh keine Ahnung habe, wie ich in der Datei diese Wörter verarbeiten will, hab ich das mal so geändert:

Code:
if %1==%kon%.jpg (
    set /a kon=%kon%+1
) else (
    %1 >> zwischenspeicher.txt
)
So werden alle Wörter, die raus sortiert werden. in der zwischenspeicher.txt gespeichert. Und von Dort kann dann eine weitere For-Schleife die Namen auslesen und die Dateien umbenennen.
 
P

Palladin007

Threadstarter
Mitglied seit
30.07.2011
Beiträge
159
Das ist jetzt mein kleines Programm:

Code:
@echo off

set kon=1
set varname=0

for /f %%i in ('dir /b *.jpg') do call :kontroll %%i

:kontroll
if %1==%kon%.jpg (
    set /a kon=%kon%+1
) else (
    echo %1 >> zwischenspeicher.txt
)

pause
Es tut exakt das, was ich einprogrammiert habe.

Allerdings wenn die Datein 1.jpg, 2.jpg, 3.jpg, 6.jpg, asdf.jpg, wert.jpg heißen, wird das gespeichert:

Wie kann ich das Problem lösen?
 
automatthias

automatthias

vernunftgeplagt
Mitglied seit
21.04.2006
Beiträge
8.664
Wenn Du den Skript nicht durch Doppelklick aus dem Explorer heraus aufrufst, sondern, wie bereits an anderer Stelle gesagt, aus einem extra Kommandozeilenfenster (Windowstaste+R, dann cmd öffnen), dann siehst Du die Fehlermeldung(en).
Zum Testen auch mal das "local echo" eingeschaltet lassen (also die erste Zeile auskommentieren "REM @echo off").
 
P

Palladin007

Threadstarter
Mitglied seit
30.07.2011
Beiträge
159
Wenn Du den Skript nicht durch Doppelklick aus dem Explorer heraus aufrufst, sondern, wie bereits an anderer Stelle gesagt, aus einem extra Kommandozeilenfenster (Windowstaste+R, dann cmd öffnen), dann siehst Du die Fehlermeldung(en).
Zum Testen auch mal das "local echo" eingeschaltet lassen (also die erste Zeile auskommentieren "REM @echo off").
Das Programm funktioniert ja. Aber wenn zwischendurch mak eine Zahl fehlt (1, 2, 3, 5, 6), dann zählt er aber bormal weiter, was bedeutet, dass er 5 und 6 als falsch erkennt.
 
Quant

Quant

Mitglied seit
19.07.2011
Beiträge
67
Mir ist noch eingefallen, die Verzeichnisse zuerst in eine Datei auszulesen, mittels

DIR /AD /B "%CD%"|FINDSTR "Den Ordner in den man sich begeben möchte" >%Temp%\xyz.txt
und dann könnte man sich per FOR /F %%A IN (%Temp%\xyz.txt) DO in das Verzeichniss reinhangeln...

aber ob sich der Aufwand lohnt...
 
I

imaetz70

Mitglied seit
07.12.2005
Beiträge
9.246
Alter
49
Standort
Hamburg
Das Programm funktioniert ja. Aber wenn zwischendurch mak eine Zahl fehlt (1, 2, 3, 5, 6), dann zählt er aber bormal weiter, was bedeutet, dass er 5 und 6 als falsch erkennt.
das tut dein prog doch, weil du es so willst. wenn die vorhandenen bilder korrekt nummeriert sind (1,2,3..) aber dazwischen eines fehlt
Aber wenn zwischendurch mak eine Zahl fehlt (1, 2, 3, 5, 6)
, dann aber wieder korrekt weiter gezählt wird, dann erkennt dein programm die unterbrechnung der vortlaufenden nummerierung (die du ja möchtest).

du lässt ja als erstes die korrekte nummerierung prüfen bis ein bild erscheint, was nicht mehr korrekt nummeriert bzw. in diese abfolge passt.. also wenn die "4" fehlt (weil gelöscht) und es dann mit 5,6 usw. weiter geht, dann sind ab dem fehlenden bild, alle als "falsch" erkannt worden, wie in deinem prog programmiert und somit wird ab dem fehlenden bild alles in deine .txt geschrieben und fortlaufeend NEU nummeriert, beginnend mit nummer "4", da ja 1,2,3 vorhanden sind..

deinem prog fehlt somit ein befehl, der fehlende nummerierungen (die nummer 4 in deinem beispiel) mit einem neuen bild ersetzt und dann aber erst wieder nummeriert, wo die fortlaufende nummerierung aufhört (in deinem beispiel ab bild 6)... dann würde dein programm erstens deine bilder fortlaufend nummerieren, neue bilder entsprechend namentlich anpassen und zwischenzeitlich entfernte bilder (die dann die fortlaufende nummerierung unterbrechen) ersetzen um die fortlaufende nummerierung wieder zu gewährleisten.. in deinem jetzigen fall wird ab dem fehlenden Bild (deine nummer 4) wieder komplett neu nummeriert. so wie du es programmiert hast...
 
Thema:

Batch-SCript nummeriert Bilder durch

Batch-SCript nummeriert Bilder durch - Ähnliche Themen

  • GELÖST Batch script kopieren von Autostart in Ordner der nach Username benannt ist.

    GELÖST Batch script kopieren von Autostart in Ordner der nach Username benannt ist.: Hallo ihr Lieben, Zu meiner Sittuation: Ich versuche ein Script zu erstellen das den Inhalt der Autostart von mehreren Usern auf einem...
  • Batch sprites aus txt dateien laden und bewegen/ ist es realiesierbar ein 3d batch spiel zu scripten

    Batch sprites aus txt dateien laden und bewegen/ ist es realiesierbar ein 3d batch spiel zu scripten: Hallo Winboard Community, Meine frage ist denke ich klar nun ich will das ganze aus dateien laden Wegen der übersichtlichkeit und das mit den 3d...
  • Ausführungstiefe in Batch-Scripten unter Windows 10 Release 1607

    Ausführungstiefe in Batch-Scripten unter Windows 10 Release 1607: Wir verwenden in diversen Scripten verschachtelte Aufrufe bei denen in einem Batchscript andere Scripte oder Executables aufgerufen werden. Dieses...
  • script oder batch datei zum entpacken

    script oder batch datei zum entpacken: Hi, hoffe dass ist das Richtige Forum hierfür. Ich habe ein Verzeichniss mit einigen Unterverzeichnissen, diese wiederrum Unterverzeichnisse. In...
  • GELÖST Windows7 Batch-Script für automatische DynDNS Anmeldung - Hilfe benötigt

    GELÖST Windows7 Batch-Script für automatische DynDNS Anmeldung - Hilfe benötigt: Hi, seit neustem muss man sich bei dyndns.org alle 30Tage einmal manuell einloggen sonst wird der Hostname gelöscht. Auf dieser Seite fand ich...
  • Ähnliche Themen

    Oben