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 BATCH Erweiterung von Laufvariablen so das ich nur den Lezten Ordner der Pfad angabe ohne Schrägstrich als ausgabe habe.

Mitglied: Darkprodukt

Darkprodukt (Level 1) - Jetzt verbinden

10.07.2012, aktualisiert 10:05 Uhr, 2558 Aufrufe, 6 Kommentare

Ich habe eine Datei Tempdatp.txt die mit Dateipfaden gefüllt ist aber ohne die Dateinamen.

Also so:
01.
C:\Users\Benutzername\Desktop\Bilder\ 
02.
C:\Users\Benutzername\Desktop\Bilder\ 
03.
C:\Users\Benutzername\Desktop\Bilder\ 
04.
C:\Users\Benutzername\Filme\ 
05.
C:\Users\Benutzername\Filme\ 
06.
C:\Users\Benutzername\ 
07.
C:\Users\Benutzername\Daten\ 
08.
C:\Users\Benutzername\Desktop\Daten\ 
09.
C:\Programme\  
10.
C:\User\  
11.
C:\User\Benutzername2\  
12.
C:\Users\Benutzername2\Desktop\  
13.
...
Diese Liste wird mit
01.
for /f "usebackq delims=" %%i in ("Struck.txt") do for /f "delims=" %%j in ('dir /a-s-h-d /b /s "%%~i"') do echo %%~dpj >>%TEMP%\tempdatp.txt
erstellt.

Als ausgabe bruchte ich
01.
Bilder 
02.
Bilder 
03.
Bilder 
04.
Filme 
05.
Filme 
06.
Benutzername 
07.
Daten 
08.
Daten 
09.
....
Wenn es möglich ist kan es auch gleich mit einer abgeänderten for-schleife gemacht werden. Der Zwischenschritt ist nicht nötig.

Habe mich mit diesem Tut auseinandergesetzt und "Erweiterung von Laufvariablen" gefunden (was ich schon teilweise wuste), aber eben nicht wie ich nur den Ordner bekomme. https://www.administrator.de/contentid/155681

Grüße
Darkprodukt
Mitglied: bastla
10.07.2012, aktualisiert um 10:38 Uhr
Hallo Darkprodukt!

Nur mal kurz:
01.
@echo off &setlocal 
02.
for /f "usebackq delims=" %%a in ("tempdatp.txt") do ( 
03.
  set "ln=%%a" 
04.
  setlocal EnableDelayedExpansion 
05.
    for %%b in ("!ln:\=" "!") do if %%b neq "" set "Ordner=%%~b" 
06.
    echo !Ordner! 
07.
  endlocal 
08.
09.
pause
- das sollte Dir doch irgendwie bekannt vorkommen ...

Unter Vermeidung der Zwischendatei dann etwa so:
01.
@echo off &setlocal 
02.
for /f "usebackq delims=" %%i in ("Struck.txt") do for /f "delims=" %%j in ('dir /a-s-h-d /b /s "%%~i"') do ( 
03.
    set "ln=%%~dpj" 
04.
    setlocal EnableDelayedExpansion 
05.
      for %%b in ("!ln:\=" "!") do if %%b neq "" set "Ordner=%%~b" 
06.
      echo !Ordner! 
07.
    endlocal 
08.
09.
pause
Weitere Alternative: Ersetze die Zeilen 4 bis 7 durch
01.
  setlocal EnableDelayedExpansion 
02.
    for %%b in ("!ln:~,-1!") do echo %%~nxb 
03.
  endlocal
- nachdem der "\" am Ende abgetrennt ist, kann der Ordnername wie ein Dateiname behandelt (und demzufolge isoliert) werden ...

Grüße
bastla
Bitte warten ..
Mitglied: Darkprodukt
10.07.2012 um 15:18 Uhr
Die Strucktur sieht bekannt aus.

Aber ich verstehe Zeile 05 nicht.

In der vorschleife wird der von Zeile 02 übergebene Strink von Hinten
nach vorne gelsen deshalb !In nehme ich an.
Danach wird bis zum ersten "\" gelesen, wobei der erste Ignoriert wird.

Alles gelesene ist in %%b.

In der if anweisung wird nun geschaut ob %%b überhaupt etwas enthält
und fals sie was enthält wird sie in die Variable Ordner geschrieben,
die Wiederum ausgegeben wird.

Stimmt das so?
Fungtioniert das auch mit ! im Namen?
Weil ("!ln:\=" "!") oder wozu ist das --> "!" gut?
Bitte warten ..
Mitglied: bastla
10.07.2012, aktualisiert um 16:28 Uhr
Hallo Darkprodukt!
In der vorschleife wird der von Zeile 02 übergebene Strink von Hinten
nach vorne gelsen deshalb !In nehme ich an.
Keineswegs - bei Verwendung von "delayedexpansion" werden Variablennamen anstatt mit "%" mit "!" geschrieben - daher also nicht %ln% sondern !ln!.
Danach wird bis zum ersten "\" gelesen, wobei der erste Ignoriert wird.
Wieder daneben - es wird das letzte Zeichen (der störende "\") abgeschnitten.
Alles gelesene ist in %%b.
Auch nicht ganz richtig - durch die Ersetzung der Trennzeichen (dieses Mal nicht _ sondern eben \) durch " " werden alle Pfadbestandteile der Reihe nach in %%b übernommen - da jedes Mal der Inhalt von %%b (wenn es denn einen gibt, deshalb die Abrage nach "") in die Variable Ordner geschrieben wird, steht am Ende der letzte Pfadbestanteil in der Variablen - anhand der ersten Beispielzeile hat die Variable daher in der Schleife der Reihe nach die Inhalte
01.
C: 
02.
Users 
03.
Benutzername 
04.
Desktop 
05.
Bilder
- da der letzte Inhalt nicht mehr überschrieben wird, ist das Ergebnis dann eben "Bilder" und dieses wird in der nächsten Zeile ausgegeben ...
Fungtioniert das auch mit ! im Namen?
Abgesehen davon, dass Du das ja wohl schon hättest testen können: leiner nein - als Workaround kann ein Unterprogramm verwendet werden:
01.
@echo off &setlocal 
02.
for /f "usebackq delims=" %%i in ("Struck.txt") do for /f "delims=" %%j in ('dir /a-s-h-d /b /s "%%~i"') do set "ln=%%~dpj" & call :ProcessLine 
03.
pause 
04.
goto :eof 
05.
 
06.
:ProcessLine 
07.
for %%b in ("%ln:\=" "%") do if %%b neq "" set "Ordner=%%~b" 
08.
echo %Ordner%
Grüße
bastla
Bitte warten ..
Mitglied: Darkprodukt
10.07.2012 um 17:01 Uhr
Ok, hab hinter echo %Ordner% natürlich noch >>%TEMP%\tempdato.txt gesetzt und die Sprungmarke :ProcessLine ans ende meiner (220 Zeilen) Datei gehängt.

Jezt hab ich aber einen komischen Fehler...
Ich habe 3 Ordner die so Heißen:
01.
Ordnername! 
02.
Ordnername 2 OVA 
03.
Ordnername 2
Jezt schaut meine ausgabe so aus:
01.
Ordnername! //+ Für jede Datei einmal 
02.
Ordnername 2 OVA //+Für jede Datei einmal
Auserdem bekomme ich als echo Ordnername //+ Für jede Datei und auserdem fehlt die Zahl.

Wiso bekomme ich das als echo ich habs doch in die Datei geleitet... auserdem fehlt jezt die Zahl
Bitte warten ..
Mitglied: bastla
10.07.2012, aktualisiert um 20:24 Uhr
Hallo Darkprodukt!

Dass es den Ordnernamen für jede einzelne Datei gibt, ist klar (und auch in Deinem Beispiel oben schon so und war bisher auch nicht anders gewünscht) ...
Ok, hab hinter echo %Ordner% natürlich noch >>%TEMP%\tempdato.txt gesetzt
Zweitbeste Variante - schreib die Umleitung davor, also:
>>%TEMP%\tempdato.txt echo %Ordner%
und das Verschwinden der Zahl ist Geschichte ...

Hindergrund: Wenn in %Ordner% "Ordnername 2" steht, bewirkt die Zeile
echo %Ordner%>>%TEMP%\tempdato.txt
aufgelöst
echo Ordnername 2>>%TEMP%\tempdato.txt
und damit die Umleitung nur der Ausgabe einer Fehlermeldung auf STDERR (Kanal 2) in die Datei "%TEMP%\tempdato.txt" (und da kommt natürlich nix, da ja kein Fehler auftritt) ...

Grüße
bastla
Bitte warten ..
Mitglied: Darkprodukt
10.07.2012 um 17:40 Uhr
Ok danke

Super Hilfe

Grüße Darkprodukt
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch erweiterung gesucht
Frage von Data61Batch & Shell7 Kommentare

Hallo zusammen, ich möchte gerne eine Batch Datei erweitern. Diese für derzeit die Datensicherung von 2012 R2 auf ein ...

Microsoft

Batch Datei zum Kopieren bestimmter ordner mit Pfad

gelöst Frage von eivloxMicrosoft6 Kommentare

Hallo zusammen , Hab schon ein bisschen gegoogled aber nichts passendes gefunden . Folgendes Problem: Ich möchte einen Ordner ...

Batch & Shell

Batch dir und Html Link ausgabe

gelöst Frage von Pilger83Batch & Shell7 Kommentare

Hallo zusammen, folgendes Problem, ich möchte eine Batch mit folgender function dir Ordner plus Unterordner durchsuchen ausgabe ohne Kopfzeile ...

Batch & Shell

BATCH: Leerzeichen im Registry Pfad

gelöst Frage von 118710Batch & Shell1 Kommentar

Hallo zusammen, dies ist mein erste Beitrag hier und ich hoffe ich bin richtig :P So! Erst ein mal ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 3 StundenWindows 102 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 6 StundenAdministrator.de Feedback10 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 23 StundenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 1 TagGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Server-Hardware
Welche Rolle spielt Design bei Enterprise IT Hardware?
Frage von ApolloXServer-Hardware17 Kommentare

Ich arbeite für einen internationalen Elektronikhersteller in der Forschung und meine Aufgabe ist es, Feedback von Nutzern in Hinsicht ...

Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...