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

Parent-Verzeichnis als String auslesen... schwierig?

Frage Entwicklung Batch & Shell

Mitglied: 52271

52271 (Level 1)

19.08.2007, aktualisiert 20.08.2007, 4096 Aufrufe, 5 Kommentare

Hallo an alle! Bin leider eher ein Novize, als daß ich Euch noch/schon helfen könnte... vielleicht könnt Ihr mir dafür die Augen öffnen? Danke für's Drübergucken..!

Ich stehe vor folgendem Problem:

- In einem Verzeichnis der folgenden "Marke"
C:\Dokumente und Einstellungen\Dies und das\Tralala\230-Honkong\
findet sich zum Beispiel die Datei Gibsnich.txt

Ich möchte gern folgendes tun
- die ersten drei Zeichen des Überverzeichnisses auslesen
- also "230"
- dann Gibsnich.* in 230.* (umbenennen)

Habe ordentlich gesucht, aber das Populärste ist es, mit %CD% das Verzeichnis anzeigen zu lassen bzw. in einer Variable zu speichern, die dann via delims und token verändert wird... aber WIE, damit ich dann meine "230" in einer Variable gespeichert kriege? Es wird immer der ganze Pfad, mehrere Unterverzeichnisse bzw. mit Slashs \ angegeben... Es reicht bei mir nicht dazu, die Befehlserklärungen in eigenes Hirn-Bätsch umzusetzen *schmoll*...


Bedanke mich für recht kritische Kommentare oder gar Hilfe ;)

Myro
Mitglied: miniversum
19.08.2007 um 18:54 Uhr
Ist eigentlich ganz einfach.
Mit der Forschleife kans tdu den string mit den vielen \ zeilegen udn alle durchmachen, dabei nur den letzten speichern. Danach mußt du in dieser Variabeln di ersten drei zeichen rausholen und danach Die datei umbenennen. Das ganze dann so:
FOR /F "delims=\" %%i in ('echo %cd%') do set lastpath=%%i
set erste=%lastpath:0,3%
ren Gibsnich.txt %erste%.txt

miniversum
Bitte warten ..
Mitglied: 52271
19.08.2007 um 21:42 Uhr
danke, miniversum!!

leider hat die letzte portion deiner zeilen bei mir syntaxfehler ausgelöst... danke trotzdem, du hast mich auf eine schleifen-recherchen-idee gebracht, und nach ein bißchen internet-abgrasenbasteln funktioniert es jetzt... (auch wenn ich nicht genau verstehe, warum )!

REM TEIL 1
REM GRÖSSTE DATEI IN TEXTDATEI SCHREIBEN, DEREN NAMEN AUSLESEN
dir *.txt /o-s /b > sort.txt

for /f %%a in (sort.txt) do (
SET STOREME=%%a
GOTO FRWRD
)
:FRWRD



REM TEIL 2
REM Namen NUR des übergeordneten Verzeichnisses auslesen (RD)
REM THANKS TO IVO FOR THE FOLLOWING LINES
Set CF=%CD%
Set RD=
:LOOP
If "%CF:~-1,1%"=="\" GoTo :DONE
Set RD=%CF:~-1,1%%RD%
Set CF=%CF:~0,-1%
GoTo :LOOP
:DONE


REM TEIL 3
REM erste drei Buchstaben extrahieren und umbenennen
set start=0
set length=3
CALL SET erste=%%RD:~%start%,%length%%%
rename %storeme% %erste%.txt



DAAAANKE... es hat sich so gut angefühlt, als ich das Gefühl hatte, irgendjemand begreift, wie das alles vor sich geht. Ich halte es ja für reinen Zufall, daß ein Computer funktioniert ;) ...
Bitte warten ..
Mitglied: Biber
20.08.2007 um 00:11 Uhr
Moin myro81,

willkommen im Forum.

Ich würde, auch wenn die von Dir gepostete Variante des Themas funktioniert, aus Gründen der Wartbarkeit doch eher etwas 3zeiliges a la miniversums Lösung empfehlen.

Also eine FOR /F-Anweisung bezogen auf %CD% wie oben,
oder vielleicht eine simple FOR-Anweisung wie hier:
01.
for %%i in ("%cd%\..") do @Set "lastpath=%%~nxi"  
02.
set first3=%lastpath:~0,3% 
03.
ren Gibsnich.txt %first3%.txt
Grüße
Biber
Bitte warten ..
Mitglied: bastla
20.08.2007 um 00:32 Uhr
Hallo myro81!

Falls Du den Schritt 2 noch etwas abkürzen wolltest, könnte ich ([Edit]weil ich Biber's Version noch nicht gesehen hatte[/Edit]) folgenden Ansatz anbieten :
01.
for /f "delims=" %%i in ('echo %cd%') do set "RD=%%~nxi"
Funktionsweise: Bei Verwendung der Schreibweise ~nx für eine "for"-Variable (siehe am Ende der Hilfe zu "for") wird eigentlich Name und Extension einer Datei aus dem Variableninhalt extrahiert. Da allerdings der CMD-Interpreter alles, was nach dem letzten \ eines Pfades folgt, als Datei ansieht, bekommst Du, da ja %CD% keine Datei enthält, dadurch das gesuchte letzte Verzeichnis des Pfades ...

Grüße
bastla

[Edit] Bei der Bahn würden die sich vermutlich über eine Verspätung von knapp über 20 Minuten freuen ... [/Edit]
Bitte warten ..
Mitglied: 52271
20.08.2007 um 19:52 Uhr
Das ist Zauberei. Ich habe gestern ungelogen über 8 Stunden ausprobiert, getüftelt und verfeinert, und Ihr traut Euch hier, solche Dreizeiler aus dem Handgelenk zu schütteln! Vielen Dank für die Vereinfachung, Biber, und für die Hirnaufbereitung Dir, bastla..!
- eines Tages will ich sowas auch selbst können

Gruß mit herrlicher Regenfrischluft aus Dresden
Myro
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
String Zeichenpaare auslesen und bearbeiten
Frage von ahstaxBatch & Shell6 Kommentare

Moin, ich möchte gerne einen String der Form "41004800", der beliebig lang sein kann, in Zeichenpaare aufteilen, also in ...

Batch & Shell
Datei aus Verzeichnis auslesen?
gelöst Frage von freshman2017Batch & Shell4 Kommentare

Hallo Ihr! Ich wollte mir gerade mit nachfolgendem Batch Befehl: alle darin befindlichen Bilder auflisten. Ausgabe: Wie kann ich ...

Batch & Shell
String aus Spalte in csv auslesen und ersetzen
Frage von mIsSteRBatch & Shell4 Kommentare

Hallo, meine aktuelle Frage bezieht sich auf diese Frage von Dienstag. Ich muss nun eine csv auslesen und dort ...

Batch & Shell
Dateinamen aus Verzeichnis Auslesen und Stringzerlegung zur Datumsanalyse
gelöst Frage von caspi-pirnaBatch & Shell3 Kommentare

Guten Morgen. Ich habe ein Problem mit einer Batch- Aufgabe. Es soll der Inhalt eines Verzeichnisses überprüft werden. In ...

Neue Wissensbeiträge
Linux

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

Information von Frank vor 7 StundenLinux12 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. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 1 TagHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 2 TagenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

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 ...

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 ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux12 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 ...