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

String(ordnernamen) in Datei suchen, mit gefundenem String andere Datei umbenennen

Frage Entwicklung Batch & Shell

Mitglied: BD2001

BD2001 (Level 1) - Jetzt verbinden

26.02.2009, aktualisiert 14:31 Uhr, 4264 Aufrufe, 6 Kommentare

Hallo,

ich möchte folgendes bewerkstelligen. In einer Datei (abc.txt) stehen Pfadangaben zu einer gesuchten Datei+Endung. Die Endung ist immer die gleiche, jedoch variiert der Name. Ich möchte, dass die Datei den Namen des Ordners erhält, in welchem sie liegt. Die Anzahl der Unterordner ist variabel, ansonsten hätte ich den String zerlegt und mir die benötigten Token in einer Variable gespeichert. Ich weiß leider nicht, ich diese Unbekannte erhalte. Dieser Gedanke von mir muss nicht zwingend weiter verfolgt werden. Ich bin für jede Lösung zu haben.

Als Beispiel die abc.txt:
F:\quellordner\subordner1\xyz.ext
F:\quellordner\subordner1\subordner2\efg.ext
etc

Rauskommen soll letztendlich folgendes:

xyz.ext -> subordner1.ext
efg.ext -> subordner2.ext

Danke schonmal an alle
Mitglied: bastla
26.02.2009 um 14:43 Uhr
Hallo BD2001 und willkommen im Forum!

Versuch es damit:
01.
@echo off & setlocal 
02.
set "Datei=D:\abc.txt" 
03.
 
04.
for /f "usebackq delims=" %%i in ("%Datei%") do set "P=%%~pi" & call :ProcessPath "%%~nxi" 
05.
goto :eof 
06.
 
07.
:ProcessPath 
08.
for %%a in ("%P:~,-1%") do echo %~1 -^> %%~nxa%~x1 
09.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: BD2001
26.02.2009 um 16:05 Uhr
danke schonmal

soweit funktioniert es, jedoch hab ich mich leider etwas ungeschickt ausgedrückt. Als Ergebnis sollte die ext Datei physikalisch umbenannt werden, also alte Datei xyz.ext und als Ergebnis subordner1.ext.
Hab selbst nochmal getestet. Dazu hab ich %%~nxa%~x1 in eine Variable(%R%) gespeichert und wollte mittels neuer for Schleife die Datei umbennen, hat leider nich geklappt, die schleife läuft erst komplett für sich durch ... zu testzwecken hab ich erst einmal echo anstatt ren genutzt

:umbenennen
for /f "delims=" %%j in (%Datei%) do echo "%%j %R%"
goto :eof

Hab leider nicht so die Ahnung davon.
Ne kleine Erklärung zum Ende der 4.("P=%%~pi" "%%~nxi")und 8.("%P:~,-1%" %%~nxa%~x1) Zeile wär super
Bitte warten ..
Mitglied: bastla
26.02.2009 um 17:39 Uhr
Hallo BD2001!

Mit einer kleinen Anpassung (jetzt wird der volle Pfad der jeweiligen Datei an das Unterprogramm übergeben) sähe das dann so aus:
01.
@echo off & setlocal 
02.
set "Datei=D:\abc.txt" 
03.
 
04.
for /f "usebackq delims=" %%i in ("%Datei%") do set "P=%%~pi" & call :ProcessPath "%%i" 
05.
goto :eof 
06.
 
07.
:ProcessPath 
08.
for %%a in ("%P:~,-1%") do echo ren %1 "%%~nxa%~x1" 
09.
goto :eof
Ne kleine Erklärung zum Ende der 4.("P=%%~pi" "%%~nxi")
Vorweg: Näheres kannst Du mit "for /?" (gegen Ende) nachlesen ...
set "P=%%~pi"
extrahiert aus dem gelesenen Pfad nur den Pfadanteil - das Ergebnis lautet für die erste Zeile:
\quellordner\subordner1\
Gäbe es nicht den "\" am Ende, wäre der Rest einfacher; so aber wird dieser Pfad zunächst der Variablen %P% als Voraussetzung für die weitere Bearbeitung zugewiesen. Diese Bearbeitung findet im Unterprogramm ":ProcessPath" statt.

An das Unterprogramm wird zusätzlich der Dateiname + Dateityp (extension) als "%%~nxi" (in der neuen Version der gesamte Pfad), übergeben.
...und 8.("%P:~,-1%" %%~nxa%~x1) Zeile
Hierzu ein Hinweis auf "set /?" ...

Der oben angeführte störende "\" lässt sich entfernen, indem von der Variablen %P% alle Zeichen bis auf das letzte verwendet werden - damit wären wir bei:
\quellordner\subordner1
Da die Zerlegung eines Pfades nach rein formalen Aspekten vonstatten geht - der Teil nach dem letzten "\" und vor dem (dahinter liegenden) letzten "." (so vorhanden) wird als Dateiname betrachtet, der Teil ab dem letzten "." als Dateityp - kann daher nun einfach der Name des Ordners (="subordner1") als Dateiname (%%~na )gesehen werden. Um für den Fall vorzusorgen, dass sich im Ordnernamen auch ein "." befindet, wird zur Sicherheit auch noch der Typ (%%~xa) "mitgenommen" - in der Kurzfassung entsteht daraus:
"%%~nxa"
Die Anführungszeichen davor und danach sind für die von Dir angeführten Beispiele eigentlich nicht nötig (schaden aber auch nicht), was sich aber ändert, wenn der Ordnername Leerzeichen enthält (also eine weitere Vorsichtsmaßnahme).

Schließlich wird dann noch der ursprüngliche Dateityp benötigt. Dieser lässt sich aus dem Übergabeparameter %1 (das Unterprogramm kann als eigener "Batch im Batch" betrachtet werden) auf die (nun schon bekannte) Art
%~x1
entnehmen.

Grüße
bastla
Bitte warten ..
Mitglied: BD2001
26.02.2009 um 17:58 Uhr
hat sich erledigt ;) war zu lange im Kommentarfenster

Das mitm Löschen von ~nx hab ich dann auch noch hinbekommen, aber aber zu lahm mitm Posten

Dann ist die Aufgabe wohl abgearbeitet

Danke nochmals
Bitte warten ..
Mitglied: bastla
26.02.2009 um 18:06 Uhr
Hallo BD2001!
Dann ist die Aufgabe wohl abgearbeitet
Das freut.

Dokumentieren könntest Du diese Tatsache noch mit einem dieser kleinen grünen Haken ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
26.02.2009 um 19:56 Uhr
Moin BD2001,

willkommen im Forum.
<OT>
Running gag #393...
...wollte mittels neuer for Schleife die Datei umbennen...

Unter Berücksichtigung dieses Beitrag zu dem Thema "Der Aldi-Duden - gefühlte Rechtschreibung für jeden Tach" plädiert die Mehrheit in diesem Forum mit 52,4% klar für die Schreibweise "umbennen".

Ich fürchte, meine Hoffnung auf eine Durchsetzung des Synonyms "umbenamsen" kann ich begraben (mit 2,7% bzw. 9 Fundstellen über die Forumssuche gerade mal soviel wie eine freie Wählergruppe im Breisgau). .

Aber - laut FAZ ist das hier ja eine Demokratie.
Ich werde Euer Wort "umbennen" weiterhin so schreiben, wie ich es will...
</OT>

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Umbenennen von Dateien mit Ordnernamen und Unterordner
gelöst Frage von Xaero1982Batch & Shell10 Kommentare

Moin Zusammen, folgendes Problem: Ich habe einen Ordner. Nennen wir ihn "Fotos" In diesem Ordner sind dann Zig Unterordner ...

Batch & Shell
Dateien gleich Ordnernamen umbenennen (auch in allen Unterordnern)
gelöst Frage von OOmatrixOOBatch & Shell14 Kommentare

Hallo. Ich möchte in einem speziellen Ordner in ALLEN Unterordnern ALLE Dateien nach ihren Ordnernamen umbenennen. Ich habe mir ...

Batch & Shell
Umbenennen von Ordnernamen (anhand von Zeitstempel)
gelöst Frage von Zero90Batch & Shell7 Kommentare

Hallo, Es ist mal wieder so weit. Ich brauch wieder mal eure Hilfe. Momentan versuche ich eine Batch zu ...

Batch & Shell
Ordnerinhalt mit Ordnernamen umbenennen
gelöst Frage von RotnasenkaterBatch & Shell5 Kommentare

Servus, liebe Gemeinde! Ich habe ein kleines Anliegen und keienrlei Ahnung von Batch-Programmierung, deswegen hoffe ich auf Hilfe von ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 3 StundenViren und Trojaner

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 7 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell10 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...

Windows Server
Administratoren-Gruppe abfragen?
Frage von 1410640014Windows Server6 Kommentare

Hallo, kennt jemand eine einfache (und schnelle) Möglichkeit, von allen Client-Computern im Active Directorey die Administratoren-Gruppe abzufragen, wer da ...