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.

Frage Entwicklung Batch & Shell

Mitglied: Darkprodukt

Darkprodukt (Level 1) - Jetzt verbinden

10.07.2012, aktualisiert 10:05 Uhr, 2549 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. http://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
Pfad mit versteckten Ordner und Leerzeichen
gelöst Frage von dax4funBatch & Shell18 Kommentare

Hallo, attrib s -r -h C:\Dokume~1\All Us~1\Anwendungsdaten\Microsoft\Network\Connections\Pbk set link=C:\Dokume~1\All Us~1\Anwendungsdaten\Microsoft\Network\Connections\Pbk Ich will aus Bsp. D: die rasphone.pbk reinkopieren stehe ...

Neue Wissensbeiträge
Internet

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

Information von Penny.Cilin vor 2 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 3 TagenWebbrowser7 Kommentare

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

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 3 TagenSicherheit6 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Digitiales Fernsehen

Apple TV: Amazon Prime App ist verfügbar

Information von Frank vor 4 TagenDigitiales Fernsehen4 Kommentare

Die Amazon Prime Video App kann ab sofort auf einem Apple TV ab der 3 Generation installiert werden. Einfach ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

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

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...