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

PDFs in Verzeichnis per Batch umbenennen

Frage Entwicklung Batch & Shell

Mitglied: sommerzeit

sommerzeit (Level 1) - Jetzt verbinden

08.05.2009, aktualisiert 11:21 Uhr, 3563 Aufrufe, 8 Kommentare

Guten Tag!
kann bitte jemand helfen?

Ich möchte eine Batch-Datei erstellen, welche mir wie folgt Dateien verarbeitet

1. Gehe zu Verzeichnis C:\xy

2. lösche alle Dateien (in allen Unterverzeichnissen von xy) die mit einem Punkt anfangen (Bsp: "._xy_12_0025.pdf")

3. bennene alle übrigen Dateien (in allen Unterverzeichnissen von xy) um (Präfix weg und führende Nullen auch)
(Bsp:
alt: "xy_12_0025.pdf"
neu: "25.pdf")


Vielen Dank
Mitglied: LotPings
08.05.2009 um 12:05 Uhr
Hallo Sommerzeit,

welche Batch-Kenntnisse hast denn schon?
Wie sieht dein angefangener Batch aus?

Es ist nachhaltiger, jemandem "das Fischen zu lehren als ihm einen Fisch zu schenken",.
Aber sei's drum 2 Fische

01.
@Echo Off&SetLocal 
02.
set Base=C:\xy 
03.
Pushd %Base% 
04.
For /f "Delims=" %%A in ('Dir /B /S /A-D ".*.pdf" ') Do Echo Del "%%A" 
05.
Pause 
06.
Popd
Wenn die Ausgabe korrekt erscheint das "Echo" vor dem "Del" rausnehmen damit der Befehl auch ausgeführt wird.

01.
@Echo Off&SetLocal 
02.
set Base=C:\xy 
03.
Pushd %Base% 
04.
For /f "Delims=" %%A in ('Dir /B /S /A-D "*.pdf"') Do Call :RenPdf "%%~fA" 
05.
Pause 
06.
Popd 
07.
Goto :Eof 
08.
:RenPdf 
09.
Set "NewName=%~nx1" 
10.
:RenPdf2 
11.
If "%NewName%" NEQ "%NewName:*_=%" set "NewName=%NewName:*_=%"&Goto :RenPdf2 
12.
if "%NewName:~,1%"=="0" set "NewName=%NewName:~1%"&goto :RenPdf2 
13.
echo Ren "%~f1" "%NewName%"
Das gleiche gilt hier für das "Echo" vor dem "Ren".
Wenn du "Fischen lernen" willst, kannst du gerne Fragen stellen.

Gruß
LotPings

Edit in zweitem Batch Zeile "02 set Base=C:\xy" eingefügt.
Edit2: weitere Fehler ausgebessert: %1 statt %0, goto RenPDF2
Edit3: ein weiteres vergessenes "
Bitte warten ..
Mitglied: sommerzeit
11.05.2009 um 08:41 Uhr
Hallo LotPings,

Vielen Dank für deine schnelle Antwort,

meine Batch-Kenntnisse sind gleich null, aber Fischen lernen würde ich gerne!
ich weiß nur dass, der 1er löscht und der 2er umbenennt,
Leider funktionieren die zwei Batches bei mir nicht,
ich habe auch das Echo" vor dem "Ren" entfernt und trozdem will er nicht.

was habe ich falsch gemach?

Vielen Dank
Bitte warten ..
Mitglied: LotPings
11.05.2009 um 12:05 Uhr
Hallo Sommerzeit,

tut mir leid da waren noch Fehler drin, habe ich oben ausgebessert.
Bitte in der neuen Zeile 2 das richtige Basisverzeichnis einsetzen.

Gruß
LotPings
Bitte warten ..
Mitglied: sommerzeit
11.05.2009 um 13:49 Uhr
Hallo LotPings,

funktioniert leider nicht.

aber im anderen Beitrage habe ich etwas gefunden und funktioniert.

1)
@Echo Off&SetLocal

del c:\xy\.*.pdf /s /q
2)
@echo off & setlocal
set "Basis=C:\xy"
set "Ext=*.pdf"

set "Pre=%8"


for /f "delims=" %%i in ('dir /s /b /a-d "%Basis%\%Ext%"') do call :ProcessFile "%%i"
goto :eof

:ProcessFile
set "FName=%~nx1"
echo %~f1 --^> %Pre%%FName:~8%
ren "%~f1" "%Pre%%FName:~8%"
3)
@echo off & setlocal enableDelayedExpansion
For %%a in ( 0???.pdf) do Set /a "Name=1%%~na-10000" & ren %%a !name!.pdf
aber bei Punkt 3 habe ich gekämft ,dass er in den Unterordner von "C:\xy" reinschaut aber er will nicht.
Wie kann ich ihm das beibringen?

vielen Dank
Bitte warten ..
Mitglied: LotPings
11.05.2009 um 14:42 Uhr
Meine Version hatte noch einen Fehler den ich zwar erkannt aber nicht übertragen hatte.
Sollte jetzt gehen.

Gruß
Bitte warten ..
Mitglied: sommerzeit
11.05.2009 um 17:17 Uhr
PERFEKT, Vielen DANK

und nun zum Fischen lernen:
kannst du mir bitte den 2en Teil erklären wenn es dir zeitlich rein passt?

Gruß sommerzeit
Bitte warten ..
Mitglied: LotPings
11.05.2009 um 18:07 Uhr
Ich gehe mal davon aus das du weisst wie du die Hilfe der einzelnen Befehle in einer CMD-Shell mit:
Befehl /?
abfragen kannst.

For /F in Zeile 4 wertet die (in einer nicht sichtbaren SUB-Shell ausgeführte) Ausgabe von Dir /B/S/A-D *.PDF Zeile für Zeile aus und übergibt den Wert an die Sub Routine Call :RenPDF.
Das "Delims=" bedeutet die Zeile komplett (nicht getrennt) in die Variable %%A zu schreiben.

In der Subroutine :RenPDF (Zeile 08) wird die als %%A übergebene Zeile behandelt wie das Erste an eine Batch übergebene kommandozeilen-Argument. %1.

Zeile 09 übernimmt mit Hilfe de Tilde ~ Funktion nur den Namen und die Erweiterung aus der Kompletten Pfadangabe (siehe Call /? oder For /?).
Zeile 10 dient als Label für die Goto Sprünge aus den beiden folgenden Befehlszeilen.
Zele 11 benutzt die String Replace Funktion (erklärt in Set /?) um zu vergleichen ob Unterstriche in NewName enthalten sind, wenn ja werden alle Zeichen vom Anfang bis einschließlich des Unterstriches ausgetauscht gegen nichts - also gelöscht. Wenn also ein Austausch stattgefunden hat wird erneut probiert ob noch ein weiterer Unterstrich vorhanden ist.
Zeile 12 prüft ob das erste zeichen eine 0 ist, wenn ja NewName ersetzen durch NewName ab zweiter Stelle und erneut probieren. Da ja alle Unterstriche schon weg sind kann ich den gleichen Label benutzen.
Zeile 13 Rename ausführen und
..habe fertig!

Gruß
LotPings
Bitte warten ..
Mitglied: sommerzeit
12.05.2009 um 08:07 Uhr
Vielen herzlichen Dank und schließe nun den Beitrag.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
1 PDF duplizieren und umbenennen nach CSV mittels Batch
gelöst Frage von KalisserBatch & Shell5 Kommentare

Hallo, ich hoffe ihr könnt mir bei folgendem Problem helfen: Ich habe eine CSV-Datei mit endlich vielen Einträgen (variiert ...

Batch & Shell
Batch Datei: PDF Dateien verschieben, umbenennen und löschen
gelöst Frage von F0rcehunterBatch & Shell4 Kommentare

Hallo zusammen, ich versuche mich gerade an einer Batch, die folgende Arbeitsschritte durchführen soll: In dem Ordner "C:\Produktdaten_zur_Uebernahme" befinden ...

Batch & Shell
Pdf Files umbenennen
Frage von SacredBatch & Shell7 Kommentare

Hallo ihr Lieben Ich stehe vor folgendem Problem. Ich habe 600 pdf-Files die umbenannt werden sollen. Der Aktuelle name ...

Batch & Shell
Sobald PDF-Datei im Verzeichnis PDF-Datei ausdrucken
Frage von SwisterBatch & Shell14 Kommentare

Hallo, Ich habe ein kleines Programm geschrieben, dass mir sobald eine PDF-Datei im Verzeichnis vorhanden ist diese ausdruckt und ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Necur-Botnet soll Erpressungstrojaner Scarab massenhaft verbreiten

Information von BassFishFox vor 43 MinutenErkennung und -Abwehr

12,5 Millionen Spam-Mails aus einem Bot-Netz mit 6 Millionen Computern? Eigentlich eine schwache Leistung. Die Erpresser setzen dabei auf ...

Microsoft

Nadeldrucker-Problem unter Windows - Microsoft liefert Updates

Information von BassFishFox vor 1 StundeMicrosoft

Hat ja nicht lange gedauert. Nachdem die November-Updates für Windows 7, 8.1 und 10 zahlreiche Nadeldrucker lahmgelegt hatten, stellt ...

Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 8 StundenLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Heiß diskutierte Inhalte
Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux13 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Windows 10
Alle Programme mit bestimmtem Namen automatisch (per GPO) deinstallieren
gelöst Frage von lordofremixesWindows 1012 Kommentare

Hallo zusammen, gibt es eine Möglichkeit, alle Programme beginnend mit z.B. "Dell" im Namen per Script und somit per ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...