Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Dateiname bestimmter Dateien eines Ordners mit Zähler erweitern

Frage Entwicklung Batch & Shell

Mitglied: kasimodo

kasimodo (Level 1) - Jetzt verbinden

11.05.2009, aktualisiert 18:42 Uhr, 4841 Aufrufe, 6 Kommentare

Ich möchte die Namen aller Dateien (Typ) in einem Ordner durch einen Zähler erweitern!

Eine Lösung habe ich nach langen basteln. Geht dies auch etwas eleganter?
Die Nummerierung soll 0001 -000x sein. Diese sollte man dann vor oder nach den Dateinamen einfügen können!
(durch Anpassen vom Script)

DANKE kasimodo

01.
@echo on & setlocal 
02.
setlocal EnableDelayedExpansion 
03.
set Verz=%1 
04.
set datTyp=%2 
05.
rem zum testen festes verzeichnis .\test und dateityp tif 
06.
set "Verz=.\test" 
07.
set "datTyp=tif" 
08.
rem Anzahl datei in einem verzeichnis 
09.
for /f %%i in ('dir %Verz%\*.%datTyp% ^|find "Datei(en)"') do Set DATANZ=%%i 
10.
if  %DATANZ%!==! goto noFiles 
11.
 
12.
for /l %%i in (1, 1, %DATANZ%) do ( 
13.
	set /A Zaehler=%%i+10000 
14.
	set erw=!zaehler:~1! 
15.
	call :make %Verz%\*.%datTyp% !erw! 
16.
17.
ren %Verz%\*. *.%datTyp% 
18.
goto ende 
19.
 
20.
rem ========== make ================ 
21.
:make 
22.
set ext=%2 
23.
set neuername=%~n1% 
24.
set neuername=%neuername%_%ext% 
25.
ren %1 %neuername% 2>nul 
26.
goto :eof 
27.
rem ======== Ende make ============= 
28.
 
29.
:noFiles 
30.
echo noFiles 
31.
:ende 
32.
pause
Mitglied: LotPings
11.05.2009 um 19:13 Uhr
Hallo kasimodo,

du willst die Anzahl der Dateien eines Typs an den Namen aller dieser Dateien anhängen?

Die Variable ext in der Sub make sollte dann doch besser Count heißen?

Die Bedeutung der For /L Schleife erschließt sich mir nicht so ganz, wenn die mit Zähler 1 durchgelaufen ist, gibt es doch keine Dateien mit der Erweiterung %datTyp% mehr?

Die Zählung kannst du einfacher und von der Sprache unabhängig haben:
for /f %%i in ('dir /B /A-D "%Verz%\*.%datTyp%" ^|find /V /C "" ') do Set DATANZ=%%i

Gruß
LotPings
Bitte warten ..
Mitglied: kasimodo
11.05.2009 um 22:10 Uhr
hallo LotPings

du willst die Anzahl der Dateien eines Typs an den Namen aller dieser Dateien anhängen?
Nein, so war es nicht gedacht. da hab ich mich wohl nicht richtig ausgedrückt. Ich möchte folgendes erreichen:

ab.tif -> ab_0001.tif
cad.tif ->cad_0002.tif
fab.tif -> fab_0003.tif

usw. bis alle TIF im Ordner umbenannt sind!

Die Anzahl der TIF (DATZAHL) aus der ersten FOR-Schleife -> um den Lauf der zweiten FOR-Schleife zu begrenzen.

Mein "TRICK" ->
Nach jedem Durchlauf der zweiten FOR Schleife "verschwindet" eine TIF-Datei (Umbenennen mit anhängen vom Zähler ohne Dateierweiterung) Es wird die nächste (jetzt erste) Datei mit Endung TIF genommen und der Zähler erhöht.
Nachdem alle TIF-Dateien nach dem Lauf der zweiten FOR-Schleife einen Zähler aber dafür keine Erweiterung mehr haben, da werden zu Schluß alle Dateien OHNE Erweiterung nach *.tif umbenannt. (etwas gewagt - es könnten ja auch andere Dateien ohne Endung existieren )

Da diese "Konstruktion" nicht so elegant ist, darum die Frage wie man es besser lösen könnte. Meine Lösung zum Zähler ist ja auch etwas gewagt -Oder?

Danke im voraus &
vg kasimodo
Bitte warten ..
Mitglied: LotPings
11.05.2009 um 23:02 Uhr
Zitat von kasimodo:
Da diese "Konstruktion" nicht so elegant ist, darum die Frage wie man es besser lösen könnte. Meine Lösung um Zähler ist ja auch etwas gewagt -Oder?

Was heißt gewagt, unnötig kompliziert.

So einfach kann es sein:
01.
:: AppendCounter.cmd :::::::::::::::::::::::::::::::::::::::::::::::: 
02.
@echo off&setlocal 
03.
set Verz=%1 
04.
set datTyp=%2 
05.
Pushd "%Verz%" 
06.
For /f "Tokens=1,* Delims=:" %%i in ( 
07.
  'dir /B /A-D "*.%datTyp%" ^|findstr /N "." ' 
08.
    ) do Echo Ren "%%~fj" "%%~nj_%%i%%~xj" 
09.
Popd 
10.
:: AppendCounter.cmd ::::::::::::::::::::::::::::::::::::::::::::::::
Solange das Echo vor dem Ren steht, wird nur angezeigt was umbenannt würde.

Gruß
LotPings
Bitte warten ..
Mitglied: kasimodo
11.05.2009 um 23:59 Uhr
@LotPings

Ich habe einen kleinen Moment gebraucht - dann deinen Code verstanden.
Der ist wirklich um einiges einfacher!!

!! DANKE!!

Darf ich bescheiden noch nachfragen wie man den Zähler (%%i) in eine Ausgabe als vierstelliges Format bekommt. (z.B 0001, 0002 .... 0015 ...0157). Dies ich für mich wichtig. Ich brauche es wegen einer Übergabe der Dateien an ein anders Programm.

Danke im voraus
kasimodo
Bitte warten ..
Mitglied: LotPings
12.05.2009 um 00:25 Uhr
Fast genauso wie bei deiner Version
01.
:: AppendCounter.cmd :::::::::::::::::::::::::::::::::::::::::::::::: 
02.
@echo off&setlocal EnableDelayedExpansion 
03.
set Verz=%1 
04.
set datTyp=%2 
05.
Pushd "%Verz%" 
06.
For /f "Tokens=1,* Delims=:" %%i in ( 
07.
  'dir /B /A-D "*.%datTyp%" ^|findstr /N "." ' 
08.
    ) do Set /A "Z=10000+%%i"&Echo Ren "%%~fj" "%%~nj_!Z:~-4!%%~xj" 
09.
Popd 
10.
:: AppendCounter.cmd ::::::::::::::::::::::::::::::::::::::::::::::::
Gute Nacht!
Bitte warten ..
Mitglied: kasimodo
12.05.2009 um 00:45 Uhr
@LotPings

Genau so! Sieht doch viel besser aus als meine Lösung!!!!
Und wieder etwas gelernt!

Vielen DANK!

vg kasimodo
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...