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, 3124 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 ..
Ähnliche Inhalte
Windows Server
gelöst Den Inhalt von mehreren Ordnern in einem Ordner anzeigen - geht das? (16)

Frage von muLio zum Thema Windows Server ...

Sonstige Systeme
Batch Dateinamen zerlegen (5)

Frage von Mummel zum Thema Sonstige Systeme ...

Batch & Shell
gelöst Dateinamen mit Batch-Datei ändern - Problem (9)

Frage von fffffuuuuuuuhhhh zum Thema Batch & Shell ...

Batch & Shell
gelöst Teile eines Dateinamens ändern mit Batch Datei (4)

Frage von fffffuuuuuuuhhhh zum Thema Batch & Shell ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(2)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
Windows 7
gelöst Lokales Adminprofil defekt (25)

Frage von Yannosch zum Thema Windows 7 ...

Server
gelöst Wie erkennen, dass nur deutsche IPs Zugang zu einer Website haben? (22)

Frage von Coreknabe zum Thema Server ...

LAN, WAN, Wireless
gelöst Statische Routen mit ISC-DHCP Server für Android Devices (22)

Frage von terminator zum Thema LAN, WAN, Wireless ...

Exchange Server
gelöst Migration Exchange 2007 zu 2013 - Public Folder teilweise weg (16)

Frage von Andy1987 zum Thema Exchange Server ...