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
Kommentar vom Moderator Biber am 23.10.2009 um 10:41:16 Uhr
OT-Kommentare unterhalb des Kommentars bastla schreibt am 21.10.2009, 10:36:03 Uhr in Absprache mit bastla und chainsaw gelöscht.

gelöst Dateinamen auf gleiche länge bringen (Nullen auffüllen)

Mitglied: chainsaw

chainsaw (Level 1) - Jetzt verbinden

19.10.2009, aktualisiert 23.10.2009, 10698 Aufrufe, 9 Kommentare

Hallo Gemeinde,

ich habe ein Verzeichnis, in dem liegen regelmäßig ca. 140 PDF-Dateien.

Die Daten liegen in folgendem Format vor:

1.pdf
2.pdf
...
13.pdf
67.pdf
...
103.pdf

Ich muß nun alle Namen auf gleiche Länge bringen, also bei den einstelligen zwei Nullen vorne anhängen
und bei den zweistelligen eine Null anhängen. Die dreistelligen sollen so bleiben.

das ist mein bisheriger Ansatz:

01.
@echo off & setlocal  
02.
 
03.
set "Dateien=D:\Daten" 
04.
set /p var=Name eingeben: 
05.
 
06.
for /f "delims=" %%i in ('dir /b "%Dateien%\*.PDF"') do call :Tuwas "%Dateien%\%%i"  
07.
goto :eof  
08.
 
09.
:Tuwas  
10.
set "Alt=%~n1"  
11.
set "T1=%Alt:~0,1%"  
12.
ren %1 "%var%00%T1%%~x1"  
13.
goto :eof 
14.
 
Der Schnipsel funktioniert - aber nur bei einstelligen PDF`s.
Hat jemand eine Idee wie man das lösen könnte?

Schönen Tag
chainsaw
Mitglied: chainsaw
19.10.2009 um 16:22 Uhr
Nochmal ich,

ich hab jetzt ne Lösung aber das ist wohl nicht die eleganteste:

Mit den Zeilen unten sortiere ich die einstelligen und zweistelligen Dateien aus und verschiebe sie jeweils in einen
eigenen Ordner. Dort kann ich dann auf dreistellige Namenskonvention umbenennen und move die Dateien dann
wieder zurück in den ursprünglichen Ordner.

01.
move %Dateien%\?.pdf %eins% 
02.
move %Dateien%\??.pdf %zwei%
Für die Profis hier sicherlich eine "billige" Lösung aber anders bekomm ich`s nicht hin.
Vielleicht fällt jemandem noch was eleganteres ein - ich will ja was dazulernen!

Gruß chainsaw
Bitte warten ..
Mitglied: Biber
19.10.2009 um 16:56 Uhr
Moin chainsaw,

dein Ansatz oben ist eher überzeugend als der jetzt gefundene Workaround

Bau lieber den ":tuWas"-Block oben um nach dieser Skizze:
01.
@echo off & setlocal  
02.
 
03.
set "Dateien=D:\Daten" 
04.
for /f "delims=" %%i in ('dir /b "%Dateien%\*.PDF"') do call :Tuwas "%Dateien%\%%i"  
05.
goto :eof  
06.
 
07.
:Tuwas  
08.
set "Neu=10000%~n1"  
09.
REM ---jetzt steht also bei Datei "23.pdf" der Wert "1000023" in %Neu% 
10.
@echo IF /i "%~n1" NEQ "%Neu:~-3,3%" REN "%~1" %Neu:~-3,3%%~x1 
11.
goto :eof
Vor dem REN steht im Moment noch ein @echo zum testen 8was ich auch nicht getan habe bisher)
Die Zeile
REN "%~1" %Neu:~-3,3%%~x1
sollte laut Plan aufgelöst werden zu ..neuer name = die letzten 3 Stellen der Variablen %Neu%
REN "alter PdfName incl Pfad" "nnn.pdf"

Grüße
Biber
Bitte warten ..
Mitglied: bastla
19.10.2009 um 16:57 Uhr
Sollte so gehen:
01.
@echo off & setlocal 
02.
set "Dateien=D:\Daten" 
03.
set "Typ=PDF" 
04.
set /p var=Name eingeben:  
05.
 
06.
pushd "%Dateien%" 
07.
for /f "delims=" %%i in ('dir /b *.%TYP%') do call :ProcessFile "%%i" 
08.
popd 
09.
goto :eof 
10.
 
11.
:ProcessFile 
12.
set "Alt=%~n1" 
13.
echo "123456789"|findstr /b "%Alt:~,1%" || goto :eof 
14.
set /a Nr=1000+Alt 
15.
ren %1 "%var%%Nr:~-3%%~x1" 
16.
goto :eof
Grüße
bastla

[Edit] Unterprogramm so geändert, dass nur mit einer Ziffer <> "0" beginnende Dateinamen verarbeitet werden [/Edit]

[Edit2] @Biber: Soviel zum Thema "Rechtsüberholer" ... [/Edit]
Bitte warten ..
Mitglied: chainsaw
20.10.2009 um 11:00 Uhr
@Biber und bastla,

Bin wieder mal schwer beeindruckt von euch - Danke euch beiden!

@Biber:
Funktioniert perfekt, wenngleichich trotz deiner Erklärung nicht ganz verstehe was genau passiert.

Mit set "Neu=10000%~n1" bringst du erst mal alle Dateien, egal ob ein, zwei oder drei Stellen auf achstellig, oder?
Hier >> @echo IF /i "%~n1" NEQ "%Neu:~-3,3%" REN "%~1" %Neu:~-3,3%%~x1 zerpflückst du das ganze dann wieder, oder?

Ist es unverschämt, wenn ich dich bitte, mir die Zeile näher zu erläutern? Ich möchte ja was lernen!


@baslta:
In deiner Variante scheint noch was nicht zu klappen

Schönen Gruß
chainsaw
Bitte warten ..
Mitglied: Biber
20.10.2009 um 13:18 Uhr
Moin chainsaw,

ich versuch mal zu erklären (auch wenn das nicht meine starke Seite ist).

Ich habe ja gestern (anders als bastla) die im Eröffnungsbeitrag gepostete Variante mit einem weiteren Präfix im Dateinamen ignoriert.
Dieses mit SET/P abgefragte %var%-Krams. Gehörte für mich eher nicht zum eigentlichen Problem.

Also blieb für mich die Aufgabe, dass (als Beispiel)
  • im ersten Durchgang die Dateien 1.pdf, 27.pdf und 144.pdf REINgehen in die Verarbeitung und als 001.pdf, 027.pdf und 144.pdf RAUSgehen sollen
  • in einem späteren Durchgung können dann die Dateien 2.pdf, 33.pdf vorliegen und immer noch die Dateien 001.pdf, 027.pdf und 144.pdf.

Wegen den Dateien mit führender "0" im Namen wolte ich auf ein SET /A ("Rechen"-Anweisung im Batch) verzichten, weil bei Zahlen dieser Art die CMD.exe immer mit mir diskutiert, ob ich denn Oktalwerte meine. Deshalb bin ich lieber auf String-Verkettung/kein Rechnen ausgewichen.

Schritt 1 war also das Bilden eines minimal 6stelligen, max 8stelligen Strings
Aus 1.pdf wird -->Neu=100001.pdf
Aus 27.pdf wird -->Neu=1000027.pdf
Aus 144.pdf wird -->Neu=10000144.pdf

im zweiten Schritt übernehme ich dann von diesem mindestens 6 Stellen langen String die letzten 3 Stellen
Aus 1.pdf wird -->Neu=100001.pdf"-->davon die letzten 3 Stellen --> %Neu:~-3,3%" ----> 001.pdf
Aus 27.pdf wird -->Neu=1000027.pdf"-->davon die letzten 3 Stellen --> %Neu:~-3,3%" ----> 027.pdf
Aus 144.pdf wird -->Neu=10000144.pdf"-->davon die letzten 3 Stellen --> %Neu:~-3,3%" ----> 144.pdf

[im zweiten Durchgang eventuell auch:
Aus 027.pdf wird -->Neu=1000027.pdf"-->davon die letzten 3 Stellen --> %Neu:~-3,3%" ----> 027.pdf ## hier Name vorher=Name nachher##
]


Sicherheitshalter noch die Prüfung, ob ich eventuell eine Datei in das umbenamsen will, was nun schon ihr Name ist.
@echo IF /i "%~n1" NEQ "%Neu:~-3,3%" ---> prüfe, ob "Dateiname-ohne-Endung-von-Parameter1" gleich dem Ergebnis "letzte 3 Stellen".

NICHT abgefangen habe ich jetzt, dass eventuell auch eine Datei 7.pdf angefasst wird, aber bereits eine Datei 007.pdf schon existiert.
Diese Kollision (falls bei deiner Anforderung denkbar) kannst du aber sicherlich noch mit einer "IF NOT EXIST-Erweiterung einbauen.

Grüße
Biber
Bitte warten ..
Mitglied: chainsaw
20.10.2009 um 14:39 Uhr
Hallo Biber,

Wow - super - langsam kommt Licht in mein Dunkel.
Vielen Dank, dass du dir so viel Arbeit gemacht hast. Sehr nett!

Ich setzte den Beitrag jetzt auf gelöst.

Schönen Tag noch
Gruß chainsaw
Bitte warten ..
Mitglied: bastla
20.10.2009 um 15:23 Uhr
Hallo chainsaw!

Nur der Ordnung halber (eine funktionierende Lösung hast Du ja schon): Wo liegt das Problem bei meinem Ansatz?

Grüße
bastla
Bitte warten ..
Mitglied: chainsaw
21.10.2009 um 10:24 Uhr
Hallo bastla,

Sorry hatte gestern keine Zeit mehr zum testen - jetzt funktioniert auch deine Variante.

Ich habe in Zeile 13

01.
echo "123456789"|findstr /b "%Alt:~,1%" || goto :eof 
die Doppelpipes duch && ersetzt

01.
echo "123456789"|findstr /b "%Alt:~,1%" && goto :eof 
- jetzt geht`s.

Du hast ja einen ähnlichen Ansatz hast wie Biber - erst hängst du Nullen an, und dann nimmst du
die letzten drei Stellen des Dateinamens weg, oder?
Ich kapiers ja ehrlich gesagt nur scheibchenweise, aber was bewirkt >echo "123456789" < genau?

Schöne Grüße
chainsaw
Bitte warten ..
Mitglied: bastla
21.10.2009 um 10:36 Uhr
Hallo chainsaw!
was bewirkt >echo "123456789" < genau?
Damit wird dem folgenden "findstr" etwas zum Durchsuchen geliefert - konkret geht es darum,dass das erste Zeichen von %Alt% eine Ziffer (ausschließlich 0) sein soll und daher in "123456789" gefunden werden muss -allerdings hatte ich leider ein "/b" dabei, womit immer nur mit "1" verglichen wurde ...

Richtig müsste die Zeile daher lauten:
echo "123456789"|findstr "%Alt:~,1%" || goto :eof 
Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Zeilen in TXT mit Leerzeichen auf eine bestimmte Länge auffüllen

gelöst Frage von stingray14kBatch & Shell4 Kommentare

Hallo zusammen, ich habe schon nach einer passenden Lösung gesucht, aber leider nicht die richtigen Befehle gefunden. Meine Text ...

Batch & Shell

Finden von (fast) gleichen Dateinamen, Ändern von Dateinamen

gelöst Frage von internet2107Batch & Shell8 Kommentare

Ich habe leider mal wieder eine etwas knifflige Sache. Aktuell suche ich in Verzeichnissen nach Dateien mit gleichen Namen ...

DNS

DNS in AD - .domäne.int automatisch auffüllen?

gelöst Frage von Fr4nkiDNS3 Kommentare

Hallo Zusammen, in unserem AD gibt es ein merkwürdiges Phänomen. Wir nehmen jetzt einfach mal an, dass wir die ...

Datenbanken

MySQL - Wenn Zelleninhalt in View gleich NULL, dann Wert in Zelle schreiben?

gelöst Frage von mabue88Datenbanken5 Kommentare

Hallo, ich habe gerade ein Problem, das ich anhand des folgenden Beispiels erkläre: Tabelle 1: Speichert allgemeine Daten eines ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 1 TagSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 2 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 2 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL13 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs10 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall10 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)8 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...