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
Kommentar vom Moderator Biber am 02.08.2012 um 17:47:34 Uhr
Zitat von SarahL:
Beim Umbennen werden nur die ersten 8 Ziffern angezeigt ...
Set /a rgc +=1
#841
GELÖST

Batch - Dateinamen mit Nutzereingabe in mehreren Ordnern ändern

Frage Entwicklung Batch & Shell

Mitglied: SarahL

SarahL (Level 1) - Jetzt verbinden

02.08.2012, aktualisiert 13:31 Uhr, 3116 Aufrufe, 6 Kommentare

Guten Morgen alle zusammen,
ich stöbere schon seit mehreren Tagen in diesem Forum und treffe auf ganz ähnliche Probleme, wie ich sie zur Zeit habe. Ich habe schon selbst probiert eine Batch-Datei zu basteln, aber bislang schaff ich es nicht, dass der gewünschte Job erledigt wird. Hoffentlich könnt ihr mir weiterhelfen....

Zum eigentlichen Problem:
Ich habe vier verschiedene Ordner mit Dateien (pdf, doc, jpg, bmp, tiff)
die alle einen ähnlichen Aufbau haben:
eine acht-stellige Artikelnummer und ggf. noch einen Rest.
Bsp:
c:\bilder\45698234_Artikelfoto.jpg
c:\angebote\45698234 Angebot Firma_X.pdf
d:\katalog\45698234.jpg
usw...

(Insgesamt handelt es sich um ca. 25000 Dateien)

Viele Artikelnummern müssen nun durch eine neue achtstellige
Artikelnummern ersetzt werden, leider ohne ein bestimmtes System.
Deshalb suche ich nach eine Lösung die ungefähr so aussieht:

Benutzer gibt die alte Artikelnummer ein und
Dateien, welcher mit der alten Artikelnummer beginnen, werden in den vier Ordnern
gesucht, die ersten 8 Stellen des Dateinamens abgeschnitten
und anschliessend durch neue (durch den Nutzer einzugebende) 8 Ziffern ersetzt.
Der Rest des Dateinamens und die Endung soll beibehalten werden.

Ich freue mich auf eure Antworten
Falls ich meinen ersten Entwurf posten soll, bitte Bescheid geben.

Liebe Grüße

Sarah
Mitglied: bastla
02.08.2012 um 12:36 Uhr
Hallo SarahL und willkommen im Forum!
Falls ich meinen ersten Entwurf posten soll, bitte Bescheid geben.
Immer her damit ...

Grüße
bastla
Bitte warten ..
Mitglied: SarahL
02.08.2012, aktualisiert um 14:37 Uhr
Hi, super dass du dich meldest

Also soweit bin ich jetzt mit Schnippseln aus dem Forum gekommen,
wobei sich der Sinn vieler Sachen mir noch nicht erschließt:

01.
@echo off & setlocal enabledelayedexpansion 
02.
echo Alte Artikelnummer eingeben: 
03.
set /p altenr= 
04.
echo Neue Artikelnummer eingeben: 
05.
set /p neuenr= 
06.
 
07.
set "OrdnerTech=C:\Users\xxx\xxx\" 
08.
set /a Stellen=8 
09.
 
10.
if exist %OrdnerTech%\%altenr%*.* GOTO vorhanden 
11.
:vorhanden 
12.
 
13.
for /f "delims=" %%i in ('dir /s/b/a-d "%OrdnerTech%\%altenr%*.*"') do ( 
14.
    set "Name=%%~ni" 
15.
    echo ren "%%i" "!Name:~,%Stellen%!%%~xi" 
16.
)
Noch nicht eingepflegt ist die neue Artikelnummer... ich weiss nicht wo die genau hin muss.
Jetzt würde hier der :vorhanden - Schritt 4 mal wiederholt, für jeden Ordner in den
geschaut werden muss, ob eine Datei vorhanden ist.
Was ich noch vergessen habe:
Bei 2 von den 4 Ordnern muss die Datei oder die Dateien in ein anderes Verzeichnis verschoben werden.
Bitte warten ..
Mitglied: bastla
02.08.2012 um 14:23 Uhr
Hallo SarahL!

Als Anhaltspunkt: Wenn 8 Stellen am Anfang eines Dateinamens wieder durch genau 8 Stellen ersetzt werden sollen, geht das direkt mit einem "ren":
for /f "delims=" %%i in ('dir /s/b/a-d "%OrdnerTech%\%altenr%*.*"') do ren "%OrdnerTech%\%%i" "%neuenr%*.*"
Grüße
bastla

P.S.: "Code"-Formatierung ist hier beschrieben ...
Bitte warten ..
Mitglied: SarahL
02.08.2012 um 15:51 Uhr
Vielen Dank für deine schnelle Antwort.
Bin ein Stückchen weiter, jedoch gibt es noch nicht das gewünschte Ergebnis.

So sieht das Script (soll als .bat laufen) momentan aus:

01.
@echo off & setlocal enabledelayedexpansion 
02.
:eingabeneu 
03.
echo Alte Artikelnummer eingeben: 
04.
set /p altenr= 
05.
echo die ALTE Nummer lautet: %altenr% 
06.
echo NEUE Artikelnummer eingeben: 
07.
set /p neuenr= 
08.
echo die NEUE Nummer lautet: %neuenr% 
09.
echo Sind diese Angaben korrekt? ( j / n ) 
10.
set /p antwort= 
11.
if "ant"=="n" GOTO eingabeneu else GOTO umbennen 
12.
:umbennen 
13.
 
14.
set "OrdnerTech=S:\xxx\TechnischeDokumente" 
15.
set "OrdnerBild=S:\xxx\xxx\Bild" 
16.
set "OrdnerAng=S:\xxx\Angebote" 
17.
set "OrdnerKat=X:\xxx\Katalog" 
18.
set "OrdnerKatneu=X:\xxx\Katalogneu" 
19.
 
20.
for /f "delims=" %%i in ('dir /s/b/a-d "%OrdnerTech%\%altenr%*.*"') do echo ren "%OrdnerTech%\%%i" "%neuenr%*.*" 
21.
for /f "delims=" %%i in ('dir /s/b/a-d "%OrdnerBild%\%altenr%*.*"') do echo ren "%OrdnerBild%\%%i" "%neuenr%*.*" 
22.
for /f "delims=" %%i in ('dir /s/b/a-d "%OrdnerAng%\%altenr%*.*"') do echo ren "%OrdnerAng%\%%i" "%neuenr%*.*" 
23.
for /f "delims=" %%i in ('dir /s/b/a-d "%OrdnerKatneu%\%altenr%*.*"') do echo move "%OrdnerKatneu%\%%i" ""%OrdnerKatneu%%neuenr%*.*" 
24.
 
25.
pause 
26.
exit
Habe erstmal noch die Echos reingebastelt, bevor das ganze ausprobiere...

Das Ergebniss sieht leider so aus, dass der Pfad doppel angezeigt wird, also S:\xxx\TechnischeDokumente.123456789.jpgS:\xxx\TechnischeDokumente123456789.jpg
Beim Umbennen werden nur die ersten 8 Ziffern angezeigt und nicht die Endung, also _Angebot, etc. was noch dahinter geschrieben werden muss.
Aber ich spüre schonmal, dass die Lösung nicht mehr weit weg sein kann

Viele Grüße

Sarah
Bitte warten ..
Mitglied: bastla
02.08.2012, aktualisiert um 17:14 Uhr
Hallo SarahL!
Das Ergebniss sieht leider so aus, dass der Pfad doppel angezeigt wird
Sorry - das habe ich auch übersehen: Da Du ja "dir /s/b" verwendest, bekommst Du bereits vollständige Pfade geliefert, sodass das nochmalige Angeben des Ordners nicht nötig ist - daher einfach: ren "%%i" ...
Beim Umbennen werden nur die ersten 8 Ziffern angezeigt und nicht die Endung, also _Angebot, etc. was noch dahinter geschrieben werden muss.
Per "echo" lässt sich das leider auch nicht simulieren - Du kannst aber einfach mit
ren S:\xxx\Angebote\12345678_Angebot.doc 87654321*.*
durch Direkteingabe in CMD testen ...
Deine Zeile 23 ist mir allerdings nicht ganz klar - ist das eher so gemeint?
01.
for /f "delims=" %%i in ('dir /s/b/a-d "%OrdnerKat%\%altenr%*.*"') do ( 
02.
    echo move "%%i" "%OrdnerKatneu%\" 
03.
    echo ren "%OrdnerKatneu%\%%~nxi" "%neuenr%*.*" 
04.
)
Grüße
bastla
Bitte warten ..
Mitglied: SarahL
29.08.2012 um 12:55 Uhr
Hallo nochmal,

ich wollte mich nochmal zurückmelden und habe eure Hilfe nicht vergessen .
Vielen Dank für die Tips.

Das fertige Script sieht nun so aus:

@echo off & setlocal enabledelayedexpansion 
echo Alte Artikelnummer eingeben: 
set /p altenr= 
echo NEUE Artikelnummer eingeben: 
set /p neuenr= 
 
set "OrdnerTech=S:\xxx\xxx\xxx\TechnischeDokumente" 
set "OrdnerBild=S:\xxx\xxx\xxxxx\asdf" 
set "OrdnerAng=S:\xxx\xxx\Angebote" 
set "OrdnerKat=X:\xxxxx\xxxxx\Bilder" 
set "OrdnerKatneu=X:\xxxx\xxxx\Bilder\neu" 
 
for /f "delims=" %%i in ('dir /s/b/a-d "%OrdnerTech%\%altenr%*.*"') do ren "%%i" "%neuenr%*.*" 
for /f "delims=" %%i in ('dir /s/b/a-d "%OrdnerBild%\%altenr%*.*"') do ren "%%i" "%neuenr%*.*" 
for /f "delims=" %%i in ('dir /s/b/a-d "%OrdnerAng%\%altenr%*.*"') do ren "%%i" "%neuenr%*.*" 
for /f "delims=" %%i in ('dir /s/b/a-d "%OrdnerKat%\%altenr%*.*"') do ( 
    xcopy "%%i" "%OrdnerKatneu%\" 
    ren "%OrdnerKatneu%\%%~nxi" "%neuenr%*.*" 
pause 
exit 
Alles funktioniert einwandfrei und erspart meinen Kollegen und mir eine Menge Arbeit.

Liebe Grüße

Sarah
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell: Dateien nach Version löschen in mehreren Ordnern (4)

Frage von ImmerKind zum Thema Batch & Shell ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

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

Frage von xbast1x zum Thema Windows Server ...

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

Frage von Motte990 zum Thema Microsoft Office ...

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

Frage von Y3shix zum Thema Grafikkarten & Monitore ...