Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Inkrementierung in For-Schleife bleibt aus

Frage Entwicklung Batch & Shell

Mitglied: StoppelHoppel

StoppelHoppel (Level 1) - Jetzt verbinden

01.07.2013 um 22:26 Uhr, 1319 Aufrufe, 11 Kommentare, 5 Danke

Hallo Leute, ich bin hier neu und ein batchnoob:

Die in einem gegebenen Verzeichnis vorhandenen .jpgs sollen fortlaufend und mit 1 beginnend umbenannt werden (1.jpg, 2.jpg, 3.jpg ...). dir /b im Testverzeichnis zeigt:
batch.bat 
Hallo.jpg 
Neues RTF-Dokument.rtf 
Neues Textdokument.txt 
OpenDocument Zeichnung (neu).odg 
temp.txt 
test_2.jpg 
test_3.jpg

Da die Sache mit 'rename' das nächste Level zu sein scheint, wage ich mich vorerst an den aktuellen 'Endgegner': der Inkremator ;) - und beschränke mich auf 'echo':
@echo off 
set /a zaehler=1 
set pfad=%cd% 
set suffix=.jpg 
for /f "tokens=*" %%d in ('dir *jpg /b') do echo %pfad%\%zaehler%%suffix% & set /a zaehler=%zaehler%+1 
pause

das ergibt folgende Ausgabe:
E:\test4Bat\1.jpg 
E:\test4Bat\1.jpg 
E:\test4Bat\1.jpg
Erkennbar ist, das die Formulierung soweit stimmt ( es werden 3 Dateien gefunden und der Pfad, der später in 'rename' verwendet werden soll, wird zusammen gesetzt - nur der Inhalt von 'Zaehler' nicht erhöht. Dies ist auch bei der Verwendung von Klammern im 'for' Teil der Fall.

Ginge es nur um wenige Dateien - es wäre närrisch diesen Aufwand zu betreiben. Aber ein häufig wiederkehrendes Aufkommen von mehreren hundert pics in einem Ordner ohne Unterverzeichnisse wollte ich eben auf diese Art lösen. Über Hinweise, auch hinsichtlich der Absicht, 'rename' mit diesem String-Ding zu füttern, wäre ich froh.

Viele Grüße
Mitglied: rubberman
01.07.2013, aktualisiert um 23:00 Uhr
Hallo StoppelHoppel, willkommen im Forum.

Du benötigst die "verzögerte Variablenerweiterung" um Änderungen innerhalb einer Kommandozeile oder eines Blocks greifbar zu machen.

01.
@echo off  
02.
set /a "zaehler=1" 
03.
set "pfad=%cd%" 
04.
set "suffix=.jpg" 
05.
for /f "delims=" %%d in ('dir *%suffix% /a-d /b') do ( 
06.
  set "file=%%d" 
07.
  setlocal EnableDelayedExpansion 
08.
  echo !file! 
09.
  echo !pfad!\!zaehler!!suffix! 
10.
  endlocal 
11.
  set /a "zaehler += 1" 
12.
13.
pause
Grüße
rubberman

EDIT: siehe bastla
Bitte warten ..
Mitglied: bastla
01.07.2013, aktualisiert um 22:46 Uhr
... wobei ich allerdings
for /f "delims=" %%d in ('dir *%suffix% /b') do (
hybscher fände ...

... und für die Übervorsichtigen unter uns:
for /f "delims=" %%d in ('dir *%suffix% /b/a-d') do (
Grüße
bastla
Bitte warten ..
Mitglied: rubberman
01.07.2013, aktualisiert um 23:04 Uhr
Hallo bastla,

normalerweise bin ich ja immer hybsch und ybervorsichtig. Da das Thema DelayedExpansion nun aber in jedem fünften Beitrag behandelt wird, scheint es so als würde ich nachlässig. Aber ich mach's mal noch hybscher ...

Grüße
rubberman
Bitte warten ..
Mitglied: StoppelHoppel
02.07.2013 um 01:52 Uhr
Danke für den freundlichen Empfang und die prompte Hilfestellung

@rubberman: Ehrlich gesagt bin ich über den Gegenstand "verzögerte Variablenerweiterung" einige Male gestolpert, kam aber aufgrund mangelnden Durchblicks nicht auf die Idee, das hier der Hase im Pfeffer liegt. Ich werde darüber lesen müssen. Variablenbelegung in "" zwecks Eindeutigkeit betr. Leerzeichen?

@bastla: Sind mit "delims=" Trennzeichen 'ausgeschaltet' bzw. werden nicht gesucht? /a-d ist wirklich sicherer, allerdings gibt's definitiv keine Unterverzeichnisse

Funktioniert prima. Auch die vorgelagerte Ausgabe des im nächsten Schritt zu verwurstenden Dateinamens ist zweckmäßig. Danke Euch.

Gruß vom Hoppel
Bitte warten ..
Mitglied: bastla
02.07.2013 um 08:33 Uhr
Hallo StoppelHoppel!
Sind mit "delims=" Trennzeichen 'ausgeschaltet' bzw. werden nicht gesucht?
Yep - damit erhältst Du den kompletten Dateinamen inkl Typ; ohne Angabe eines (bzw hier explizit keines) Delimiters würde defaultmäßig anhand von Leerzeichen getrennt werden.

Grüße
bastla
Bitte warten ..
Mitglied: rubberman
02.07.2013 um 09:42 Uhr
Hallo StoppelHoppel.

Variablenbelegung in "" zwecks Eindeutigkeit betr. Leerzeichen?
Unter anderem. Es schützt dich auch vor Sonderzeichen, bspw. &.
Wenn du anschließend die Pfade/Dateinamen per RENAME verwurstest, schadet es auch nie wenn du Anführungszeichen setzen würdest

Grüße
rubberman
Bitte warten ..
Mitglied: StoppelHoppel
02.07.2013 um 14:20 Uhr
Hallo.

Nachtrag: 'Rename' zu zähmen war ungleich leichter. Einzig der Fall mit Leerzeichen im Dateinamen machte - wie Ihr sagen werdet - erwartungsgemäß Schwierigkeiten ;). Gelöst habe ich es mit:

01.
02.
03.
set file=!file: =?! 
04.
rename !pfad!\!file! !zaehler!!suffix! 
05.
06.
.
Schönen Tag und Gruß vom
Hoppel
Bitte warten ..
Mitglied: bastla
02.07.2013 um 14:44 Uhr
Hallo StoppelHoppel!

Das wäre ja genau der Fall, den rubberman gemeint hat - und daher hätte
ren "!pfad!\!file!" !zaehler!!suffix!
genügt ...

Grüße
bastla
Bitte warten ..
Mitglied: StoppelHoppel
02.07.2013 um 16:03 Uhr
Hallo Bastla!

Ich bitte um Nachsicht ;) - aber ich habe das Problem ausschließlich bei den zu setzenden '?' gesucht ... werden die dann intern automatisch gesetzt? Bedeutet das ferner, dass mit dem Gebrauch von "" so etwas wie 'Syntaxsensitivität' hergestellt wird?

btw: interessant, den Weg über
: =?
entdeckt zu haben

Toller Support, funktioniert jetzt dank Deines Hinweis' auch mit Blanks im Verzeichnisnamen

Danke und Gruß
Hoppel
Bitte warten ..
Mitglied: bastla
02.07.2013 um 17:46 Uhr
Hallo StoppelHoppel!
Bedeutet das ferner, dass mit dem Gebrauch von "" so etwas wie 'Syntaxsensitivität' hergestellt wird?
Den Begriff müsstest Du erst erklären ...

Mit den Anführungszeichen werden Pfad-/Dateinamen mit enthaltenen Leerzeichen "zusammengehalten", da das Leerzeichen nicht nur (zusammen mit TAB) Default-Delimiter in der for-Schleife, sondern auch Trennzeichen zwischen Batch-Befehlen / -Argumenten ist.

Weiterer Vorteil der Verwendung von Anführungszeichen: Wie von rubberman auch schon angesprochen können so die Sonderzeichen "<|>&" als "gewöhnliche" Zeichen in Strings ("&" auch in Pfad-/Dateinamen) verwendet werden.

Grüße
bastla
Bitte warten ..
Mitglied: StoppelHoppel
02.07.2013 um 19:21 Uhr
Hallo bastla!

Ich erspare Euch besser die Beschreibung meiner Wortschöpfung ...
Ich habe das mehrfach Wiederholte wohl verstanden und die .bat tut, was sie soll

Danke und Gruß
Hoppel
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch Schleife als FOR-SCHLEIFE
gelöst Frage von mp2711Batch & Shell2 Kommentare

Mit den FOR-Schleifen habe ich mich leider bislang zu selten auseinander gesetzt, aber da ich sonst gerade nicht weiter ...

Batch & Shell
FOR Schleife mit LOOP und nachfolgender FOR Schleife
gelöst Frage von miczarBatch & Shell6 Kommentare

Hallo zusammen, ich habe ein Problem mit einem Batchfile. Situation: im Netzwerk ist kein WINS mehr vorhanden und so ...

Batch & Shell
FOR Schleife läuft nicht
gelöst Frage von sugramBatch & Shell4 Kommentare

Hallo Ich glaube ich sehe den Wald vor lauter Bäumen nicht. Aber ich bekomme die FOR Schleife nicht zum ...

Batch & Shell
For Schleife kaputt?
gelöst Frage von Peter32Batch & Shell5 Kommentare

Hallo, ich finde den Fehler nicht irgendwie bekomme ich ständig denselben Inhalt in "Name.txt" und kann dann nicht weiterarbeiten ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 22 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement16 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...