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 Zweites Zeichen bei Ordnern und Unterordner ersetzten durch Batch

Mitglied: bartosch

bartosch (Level 1) - Jetzt verbinden

08.08.2011 um 10:36 Uhr, 2495 Aufrufe, 14 Kommentare

Hallo zusammen, ich hab ein kleines Problem und ich hoffe ihr könnt mir helfen.

Problembeschreibung:

Ich habe eine leere Ordnerstruktur mit vielen Unterordnern die sehr verzweigt sind. (2500 ordner)

Ich würde gerne eine batch schreiben die sich jeden Ordner anschaut und wenn sie an zweiter Stelle (nur an zweiter Stelle) die zahl 4 findet durch die zahl 5 ersetzt.

Da ich fast keine Erfahrung diesbezüglich habe, hab ich schon Probleme beim Ansatz.

DANKE
bartosch
Mitglied: 60730
08.08.2011 um 10:57 Uhr
Moin,

such doch mal im Forum nach bestimmtes Zeichen in Verzeichnis ersetzen.

Da sollte doch was für dich dabei sein.

Gruß
Bitte warten ..
Mitglied: Friemler
08.08.2011 um 11:18 Uhr
Hallo bartosch,

das sollte so gehen:
01.
@echo off & setlocal
02.

03.
set "SrcDir=E:\Test"
04.

05.
for /d /r "%SrcDir%" %%d in ("?4*.*") do (
06.
  set "DirPath=%%d"
07.
  set "DirName=%%~nxd"
08.
  call :ProcessDir
09.
)
10.

11.
exit /b
12.

13.

14.
:ProcessDir
15.
  set "DirName=%DirName:~0,1%5%DirName:~2%"
16.
  ren "%DirPath%" "%DirName%"
17.
exit /b
In Zeile 3 das Verzeichnis eintragen, das die Verzeichnisstruktur enthält.

[EDIT]
ACHTUNG! Das Script funktioniert nur, wenn kein Explorerfenster geöffnet ist, in dem kurz vor Ausführung des Scripts durch die zu bearbeitende Verzeichnisstruktur gebrowst wurde. Siehe die folgenden Postings.

Ansonsten hat User Skyemugen eine zwar langsamere aber immer funktionierende Lösung gepostet, mittlerweile ziemlich ans Ende des Threads gerutscht.
[/EDIT]

Gruß
Friemler
Bitte warten ..
Mitglied: Skyemugen
08.08.2011 um 11:45 Uhr
Aloha,

ich hätte da auch etwas im Angebot: dat dauert 'n bissl - getestet mit 8 Hauptordnern und jeweils 6 Ebenen
01.
@echo off & setlocal
02.
set "Pfad=E:\Skripte\Ablage"
03.

04.
pushd "%Pfad%"
05.
@for /f "delims=" %%s in ('dir /b /ad') do call :Tauchen "%%s"
06.
popd
07.
pause
08.
exit /b
09.

10.
:Tauchen
11.
pushd "%~1"
12.
@for /f "delims=" %%s in ('dir /b /ad') do call :Tauchen "%%s"
13.
set "Ebene=%cd%"
14.
set "Ordner=%~1"
15.
popd
16.
call :Ablauf "%Ordner%"
17.
goto :eof
18.

19.
:Ablauf
20.
set "Name=%~1"
21.
set "Neu=%Name:~1,1%"
22.
if "%Neu%" EQU "4" ren "%Ebene%" "%Name:~0,1%5%Name:~2%"
23.
goto :eof
Eventuell ein wenig umständlich aber so ist das bei mir eben dafür ist es getestet und funktionsfähig.
Die Schwierigkeit ist ja hierbei, dass erst die Child-Ordner umbenannt werden und dann die Parent-Ordner, sonst find' der nix mehr, darum rattert mein Skript auch erst bis zur Unendlichkeit durch und arbeitet sich dann wieder nach oben hin, etwas schlaueres fällt mir auf 'nem Montag erst einmal nicht ein. ^_^

Hm aber mit Suchmaske sollte natürlich schneller sein, muss ich noch einmal testen, ich trau diesen Suchmasken nicht immer ^_^ Lieber doch nicht, dann werden keine Verzeichnisse mehr durchsucht, die dem nicht entsprechen aber eventuell deren Unterordnern, also belass' ich es dabei.

greetz André
Bitte warten ..
Mitglied: bartosch
08.08.2011 um 13:17 Uhr
@Friemler
Hi Danke, habe es ausprobiert passiert aber nix. Es ist auch meiner Meinung nach viel zu schnell, wenn ich die bat aufrufe ist sie schon fertig allerdings ohne Ergebnis.
Bitte warten ..
Mitglied: Friemler
08.08.2011 um 13:50 Uhr
Hallo bartosch,

ich habe nur oberflächlich getestet. Ab einer gewissen Verschachtelungstiefe von umzubenennenden Verzeichnissen funktioniert das Script nicht mehr. Nimm das Script von Skyemugen.

Ich hänge mal eine Verzeichnisstruktur an, bei der es teilweise funktioniert hat, teilweise nicht.
E:\TEST
├───14test               Fehler
│   ├───14test           Fehler
│   │   ├───14test       Fehler
│   │   │   ├───15test   Erfolg
│   │   │   └───16test
│   │   └───16test
│   │       ├───15test   Erfolg
│   │       └───16test
│   └───16test
│       ├───14test       Fehler
│       │   ├───15test   Erfolg
│       │   └───16test
│       └───16test
│           ├───15test   Erfolg
│           └───16test
└───16test                          Interessant wird es ab hier
    ├───15test           Erfolg
    │   ├───15test       Erfolg
    │   │   ├───15test   Erfolg
    │   │   └───16test
    │   └───16test
    │       ├───15test   Erfolg
    │       └───16test
    └───16test
        ├───15test       Erfolg
        │   ├───15test   Erfolg
        │   └───16test
        └───16test
            ├───15test   Erfolg
            └───16test
[EDIT]
Und wie immer gilt: Batchfiles, die nicht machen, was sie sollen, aus einem Konsolenfenster starten und nicht per Doppelklick, damit man auch die Ausgaben sieht. Und zum debuggen zusätzlich noch das ECHO OFF rausnehmen, dann sieht man auch, in welcher Reihenfolge und mit welchem Inhalt die einzelnen Zeilen ausgeführt werden.

Komisch, jetzt funktioniert das Script mit der obigen Verzeichnisstruktur. Hmm, Kopf kratz....
[/EDIT]

Gruß
Friemler
Bitte warten ..
Mitglied: Skyemugen
08.08.2011 um 14:00 Uhr
Aloha Friemler,

stimmt, fiel mir vorhin auf, irgendwann ist ihm der Pfadname zu lang und wird aber leer dargestellt, bei mir hatte er gar nichts umbenannt, sondern gleich den Fehler ausgespuckt, witzigerweise läuft dein Skript jetzt durch, ohne Probleme, durch die ganze Struktur *grübel* hattest du etwas am Code editiert noch? Habe eben neu c&p, davor lief es definitiv nicht.

greetz André

P.S.: So Kombinationen wie /d /r sind mir immer noch spanisch ;D
Bitte warten ..
Mitglied: Friemler
08.08.2011 um 14:10 Uhr
Hallo André,

nein ich habe nichts geändert, aber gerade die gleiche Erfahrung wie Du gemacht (es läuft ).

[EDIT]
Nach ein paar Tests komme ich zu dem Ergebnis, dass der Erfolg oder Misserfolg des Scripts davon abhängt, ob ein Explorerfenster, mit dem kurz vorher durch die zu bearbeitende Verzeichnisstruktur gebrowst wurde, offen ist oder nicht. (Noch mehr Kopf kratz...)

Beispiel
Folgende Verzeichnisstruktur:
E:\TEST
├───14test
│   ├───14test
│   │   ├───14test
│   │   │   ├───14test
│   │   │   │   ├───14test
│   │   │   │   │   ├───14test
│   │   │   │   │   └───16test
│   │   │   │   └───16test
│   │   │   │       ├───14test
│   │   │   │       └───16test
│   │   │   └───16test
│   │   │       ├───14test
│   │   │       │   ├───14test
│   │   │       │   └───16test
│   │   │       └───16test
│   │   │           ├───14test
│   │   │           └───16test
│   │   └───16test
│   │       ├───14test
│   │       │   ├───14test
│   │       │   │   ├───14test
│   │       │   │   └───16test
│   │       │   └───16test
│   │       │       ├───14test
│   │       │       └───16test
│   │       └───16test
│   │           ├───14test
│   │           │   ├───14test
│   │           │   └───16test
│   │           └───16test
│   │               ├───14test
│   │               └───16test
│   └───16test
│       ├───14test
│       │   ├───14test
│       │   │   ├───14test
│       │   │   │   ├───14test
│       │   │   │   └───16test
│       │   │   └───16test
│       │   │       ├───14test
│       │   │       └───16test
│       │   └───16test
│       │       ├───14test
│       │       │   ├───14test
│       │       │   └───16test
│       │       └───16test
│       │           ├───14test
│       │           └───16test
│       └───16test
│           ├───14test
│           │   ├───14test
│           │   │   ├───14test
│           │   │   └───16test
│           │   └───16test
│           │       ├───14test
│           │       └───16test
│           │           ├───14test
│           │           └───16test
│           └───16test
│               ├───14test
│               │   ├───14test
│               │   └───16test
│               └───16test
│                   ├───14test
│                   └───16test
└───16test
    ├───14test
    │   ├───14test
    │   │   ├───14test
    │   │   │   ├───14test
    │   │   │   │   ├───14test
    │   │   │   │   └───16test
    │   │   │   └───16test
    │   │   │       ├───14test
    │   │   │       └───16test
    │   │   └───16test
    │   │       ├───14test
    │   │       │   ├───14test
    │   │       │   └───16test
    │   │       └───16test
    │   │           ├───14test
    │   │           └───16test
    │   └───16test
    │       ├───14test
    │       │   ├───14test
    │       │   │   ├───14test
    │       │   │   └───16test
    │       │   └───16test
    │       │       ├───14test
    │       │       └───16test
    │       └───16test
    │           ├───14test
    │           │   ├───14test
    │           │   └───16test
    │           └───16test
    │               ├───14test
    │               └───16test
    └───16test
        ├───14test
        │   ├───14test
        │   │   ├───14test
        │   │   │   ├───14test   <- Bis zu diesem Verzeichnis im Explorer durchklicken
        │   │   │   └───16test
        │   │   └───16test
        │   │       ├───14test
        │   │       └───16test
        │   └───16test
        │       ├───14test
        │       │   ├───14test
        │       │   └───16test
        │       └───16test
        │           ├───14test
        │           └───16test
        └───16test
            ├───14test
            │   ├───14test
            │   │   ├───14test
            │   │   └───16test
            │   └───16test
            │       ├───14test
            │       └───16test
            │           ├───14test
            │           └───16test
            └───16test
                ├───14test
                │   ├───14test
                │   └───16test
                └───16test
                    ├───14test
                    └───16test
  • Explorer öffnen und bis zum folgenden Verzeichnis durchklicken:
E:\Test\16test\16test\14test\14test\14test\14test
Man ist dann im oben markierten Verzeichnis.

  • Jetzt im Explorerfenster ins Wurzelverzeichnis von E: wechseln, auch in der Baumansicht links alle Unterzweige von E: schließen.

  • Script aus Konsolenfenster starten -> 3 Fehlermeldungen "Zugriff verweigert"

  • Ergebnis des Scriptlaufs:
E:\TEST
├───15test
│   ├───15test
│   │   ├───15test
│   │   │   ├───15test
│   │   │   │   ├───15test
│   │   │   │   │   ├───15test
│   │   │   │   │   └───16test
│   │   │   │   └───16test
│   │   │   │       ├───15test
│   │   │   │       └───16test
│   │   │   └───16test
│   │   │       ├───15test
│   │   │       │   ├───15test
│   │   │       │   └───16test
│   │   │       └───16test
│   │   │           ├───15test
│   │   │           └───16test
│   │   └───16test
│   │       ├───15test
│   │       │   ├───15test
│   │       │   │   ├───15test
│   │       │   │   └───16test
│   │       │   └───16test
│   │       │       ├───15test
│   │       │       └───16test
│   │       └───16test
│   │           ├───15test
│   │           │   ├───15test
│   │           │   └───16test
│   │           └───16test
│   │               ├───15test
│   │               └───16test
│   └───16test
│       ├───15test
│       │   ├───15test
│       │   │   ├───15test
│       │   │   │   ├───15test
│       │   │   │   └───16test
│       │   │   └───16test
│       │   │       ├───15test
│       │   │       └───16test
│       │   └───16test
│       │       ├───15test
│       │       │   ├───15test
│       │       │   └───16test
│       │       └───16test
│       │           ├───15test
│       │           └───16test
│       └───16test
│           ├───15test
│           │   ├───15test
│           │   │   ├───15test
│           │   │   └───16test
│           │   └───16test
│           │       ├───15test
│           │       └───16test
│           │           ├───15test
│           │           └───16test
│           └───16test
│               ├───15test
│               │   ├───15test
│               │   └───16test
│               └───16test
│                   ├───15test
│                   └───16test
└───16test
    ├───15test
    │   ├───15test
    │   │   ├───15test
    │   │   │   ├───15test
    │   │   │   │   ├───15test
    │   │   │   │   └───16test
    │   │   │   └───16test
    │   │   │       ├───15test
    │   │   │       └───16test
    │   │   └───16test
    │   │       ├───15test
    │   │       │   ├───15test
    │   │       │   └───16test
    │   │       └───16test
    │   │           ├───15test
    │   │           └───16test
    │   └───16test
    │       ├───15test
    │       │   ├───15test
    │       │   │   ├───15test
    │       │   │   └───16test
    │       │   └───16test
    │       │       ├───15test
    │       │       └───16test
    │       └───16test
    │           ├───15test
    │           │   ├───15test
    │           │   └───16test
    │           └───16test
    │               ├───15test
    │               └───16test
    └───16test
        ├───14test                    <- Diese Verzeichnisse wurden eben geöffnet
        │   ├───14test                <-
        │   │   ├───14test            <-
        │   │   │   ├───15test        <- Hier hat es funktioniert
        │   │   │   └───16test
        │   │   └───16test
        │   │       ├───15test
        │   │       └───16test
        │   └───16test
        │       ├───15test
        │       │   ├───15test
        │       │   └───16test
        │       └───16test
        │           ├───15test
        │           └───16test
        └───16test
            ├───15test
            │   ├───15test
            │   │   ├───15test
            │   │   └───16test
            │   └───16test
            │       ├───15test
            │       └───16test
            │           ├───15test
            │           └───16test
            └───16test
                ├───15test
                │   ├───15test
                │   └───16test
                └───16test
                    ├───15test
                    └───16test
  • Explorerfenster schließen

  • Script nochmals starten

  • Keine Fehlermeldung, Verzeichnisse wurden umbenannt.


Fazit
Da spielt wohl der Verzeichniscache des Explorers eine Rolle.

[/EDIT]

Gruß
Friemler
Bitte warten ..
Mitglied: bartosch
08.08.2011 um 15:29 Uhr
DANKE, soweit ich das beurteilen kann hat das Script alles umbenannt.
Bitte warten ..
Mitglied: Friemler
08.08.2011 um 16:00 Uhr
Hallo André,

ich habe herausgefunden, woran es lag, siehe mein Edit in diesem Posting.

Gruß
Friemler
Bitte warten ..
Mitglied: Skyemugen
08.08.2011 um 16:02 Uhr
Aloha Friemler,

alter Falter, worauf wir demnächst beim Bätscheln wohl noch so achten müssen(?).

Wer kommt auf die Idee vorher den Explorer zu schließen, damit der Cache frei ist ... wtf.

Dann schreibe mal für die Nachwelt noch ein echo soundso ins Skript, damit das keiner übersieht :D

greetz André
Bitte warten ..
Mitglied: Skyemugen
08.08.2011 um 16:03 Uhr
Aloha,

2500 Ordner, hm? Mich würde mal interessieren, wie lange das Skript am Laufen war :D

greetz André
Bitte warten ..
Mitglied: bartosch
08.08.2011 um 16:08 Uhr
Nicht so lange nicht alle Ordner hatten ne 4 an zweiter Stelle ich hab nicht auf die Uhr geschaut aber nach gefühlten 10min war die Sache erledigt.
Bitte warten ..
Mitglied: Skyemugen
08.08.2011 um 16:21 Uhr
Aloha,

na immerhin, das Zeitaufwendigste ist eben der Vergleich der zweiten Stelle per if aber die Hauptsache ist, dass es funktioniert

greetz André
Bitte warten ..
Mitglied: pieh-ejdsch
17.08.2011 um 13:08 Uhr
moin Andrè,

warum sehe ich den T erst jetzt? Na lieber spät als nie.

wenn erst der Tiefste Ordner Umbenannt wird bist Du immer auf der Sicheren Seite.
Frimlers Script mit For /d /r ... da werden die Ordner sicher "on the Fly" in die Variablen gesetzt und der Pfad ist demnach immer Aktuell
anders beim dir wo ja praktisch ein Abild für "offline" ensteht.

Timo (oder Lot) hatte die Sortierung mal so gelöst
Dir /ad /b /s D:\ |sort /r
zuvor hatte ich die Verzeichnisse anders Vorsortiert
Ersetzen von Zeichen in Datei- und Verzeichnisnamen in allen Unterordnern
das in der Marke :u müsste mit dem Ersetzt werden:
01.
setlocal enabledelayedexpansion
02.
if "!new:~1,1!" == "4" set "new=!new:~0,1!5!new~2!"
03.
endlocal&set "new=%new%"
und mit Paramtetern Pfad\Ordner /d /u starten

aber Deins und Friemlers ist dafür schön Kurz.

das ein Ordner nicht umbenannt werden kann wenn er offen ist weis ja jeder aber wenn der Explorer noch offen ist und der Pfad nicht mehr aktuell ... ? Grübel

Gruß Phil
Bitte warten ..
Ähnliche Inhalte
Outlook & Mail
Outlook - Aufgaben zu Zweit bearbeiten
gelöst Frage von ArnoNymousOutlook & Mail1 Kommentar

Moin Leute, zwei Mitarbeiter sollen gemeinsam Aufgaben über Outlook bearbeiten. D.h. dass beide jederzeit die Aufgaben einsehen und bearbeiten ...

Netzwerke

Dd-wrt OpenVPN Backup-VPN auf zweit Router

Frage von DonJoeNetzwerke10 Kommentare

Hallo, ich haben auf einen dd-wrt Router A (192.168.X.A) OpenVPN-Server laufen und es funktioniert, nach dieser Anleitung nach: Ich ...

Microsoft

Verknüpfungspfeile werden durch andere Symbole ersetzt

gelöst Frage von tomolpiMicrosoft3 Kommentare

Hallo, mir ist vorhin was lustiges aufgefallen: die Pfeile bei den Verknüpfungen auf meinem Desktop werden neuerdings willkürlich durch ...

Webbrowser

InternetExplorer ersetzt die Endung . durch nen Unterstrich

Frage von 118534Webbrowser28 Kommentare

Hallo, manchmal wenn ich etwas im Ie 11 downloade, wir es als dateiname_endung anstatt dateiname.endung heruntergeladen. Ich muss dann ...

Neue Wissensbeiträge
Exchange Server

1und1 IONOS: Probleme beim Mailversand mit Exchange

Information von reksierp vor 4 StundenExchange Server1 Kommentar

Hallo, seit Do, 17.1.19 etwa Mittags nimmt 1und1 IONOS keine Mails mehr über den Standard-Port SMTP 25 an. Nachdem ...

LAN, WAN, Wireless

Cisco Mikrotik VPN Standort Vernetzung mit dynamischem Routing

Anleitung von aqui vor 17 StundenLAN, WAN, Wireless

1. Allgemeine Einleitung Das nachfolgende Tutorial ist eine Fortführung der hier bei Administrator.de schon bestehenden VPN Tutorials und beschreibt ...

Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 2 TagenWindows Mobile

Moin, Microsoft empfiehlt als Alternative den Umstieg auf iOS oder Android, wie man hier lesen kann. Gruß Uwe

Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 4 TagenInternet6 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Temporäre WLAN Verbindung für AD-Login
Frage von Christian.WidauerLAN, WAN, Wireless17 Kommentare

Hallo zusammen, ich weiß leider nicht unter welchem Begriff ich dafür suchen muss, daher habe ich bisher leider nichts ...

LAN, WAN, Wireless
Bekannte Drosselungen bei Providern ?
Frage von HenereLAN, WAN, Wireless15 Kommentare

Servus zusammen, in bereits angefangen, aber ich hoffe dass der Beitrag hier mehr Informationen bringt. Sind Portdrosselungen bzw gezielte ...

Netzwerkmanagement
Reverse Proxy für TCP und UDP Anfragen
gelöst Frage von flxklsNetzwerkmanagement14 Kommentare

Hallo zusammen, ich besitze einen Rootserver, der nur eine öffentliche IP besitzt und auf dem mehrere VMs laufen. Da ...

Windows Server
MSSQL Backup in Form von .sql einspielen
Frage von janosch12Windows Server14 Kommentare

Guten Morgen, wir verwenden das Tool SQLandFTPBackup ( ) zum sichern einiger MSSQL Datenbanken. Nun sichert das Toll die ...