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
GELÖST

Parent-Verzeichnis als String auslesen... schwierig?

Frage Entwicklung Batch & Shell

Mitglied: 52271

52271 (Level 1)

19.08.2007, aktualisiert 20.08.2007, 4075 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
2 String aus PDF auslesen und diesen zum Umbenamsen benutzen (8)

Frage von ingo101 zum Thema Batch & Shell ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...