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

über batch nen text kürzen

Frage Entwicklung Batch & Shell

Mitglied: extended

extended (Level 1) - Jetzt verbinden

28.11.2010 um 10:09 Uhr, 4210 Aufrufe, 5 Kommentare

Hi, ich habe folgendes Problem.

Ich habe eine Liste meiner pdf-Datein. (alle liegen in verschiedenen Ordner)
diese sieht ungefähr so aus:

c:\verschiedenes\12345\blabla.pdf
c:\verschiedenes\4r232\blub.pdf
c:\verschiedenes\2jd983\nocheine.pdf


Nun möchte ich aber nur die Ordner aufgelistet haben, also ungefähr so

c:\verschiedenes\12345
c:\verschiedenes\4r232
c:\verschiedenes\2jd983

also alle Zeichen in der Textdatei von .pdf bis zum ersten / löschen.


ist die über ein Batch-skript zu realisieren?
Mitglied: 90776
28.11.2010 um 11:01 Uhr
hallo

zuerst ein paar fragen

1. liegen alle ordner in c:\verschiedenes?
2. sind die ordnernamen immer gleich aufgebaut?
3. sind die dateinamen immer gleich aufgebaut?

Grüsse Switcher
Bitte warten ..
Mitglied: MiniStrator
28.11.2010 um 11:04 Uhr
Hallo,

dir /b /s *.>textdatei.txt

Dann hast du zwar ne neue Textdatei aber das wird wurscht sein?

Gruß
Bitte warten ..
Mitglied: 76109
28.11.2010 um 11:20 Uhr
Hallo extended!

Das ließe sich mit einem VB-Script (*.vbs) in etwa so machen (Pfad-Konstanten anpassen):
01.
Const ListeAlt = "C:\Test\Liste.Txt"		'Datei-Liste mit Dateipfaden 
02.
Const ListeNeu = "C:\Test\ListeNeu.Txt"		'Datei-Liste mit Verzeichnispfaden 
03.
 
04.
Dim Fso, File, Text, TextZeile, Folder 
05.
     
06.
Set Fso = CreateObject("Scripting.FileSystemObject") 
07.
     
08.
Set File = Fso.OpenTextFile(ListeAlt) 
09.
     
10.
Text = Split(File.ReadAll, vbCrLf):  File.Close 
11.
     
12.
Set File = Fso.CreateTextFile(ListeNeu) 
13.
     
14.
For Each TextZeile In Text 
15.
    Folder = Fso.GetParentFolderName(TextZeile)		 
16.
    If Fso.FolderExists(Folder) Then File.WriteLine Folder 
17.
Next 
18.
     
19.
File.Close
In der Codezeile 12 könnte anstatt (ListeNeu) auch (ListeAlt) stehen, wobei dann die bestehende List-Datei überschrieben wird.
Desweiteren, werden nur Verzeichnispfade aufgelistet, die auch tatsächlich existieren.

Gruß Dieter
Bitte warten ..
Mitglied: bastla
28.11.2010 um 12:32 Uhr
Hallo extended!

Ergänzend zu den obigen Vorschlägen eine "minimale" und eine "extended"-Variante in Batch:

Wenn Du mit dem "\" am Ende des Pfades und ev Dubletten im Ergebnis leben kannst, wäre die einfachste Möglichkeit (gleich direkt an der Kommandozeile einzugeben):
for /f "usebackq delims=" %i in ("D:\Liste Deiner PDF.txt") do @echo %~dpi
Um sowohl den "\" zu verhindern als auch im Ergebnis Mehrfachnennungen des Pfades zu vermeiden, wäre dann doch ein Batch erforderlich:
01.
@echo off & setlocal 
02.
set "Ein=D:\Liste Deiner PDF.txt" 
03.
set "Aus=D:\Liste der Ordner Deiner PDF.txt" 
04.
 
05.
::Ausgabedatei leer erzeugen (muss für "findstr" bereits existieren) 
06.
type nul>"%Aus%" 
07.
:: Schleife über alle Zeilen der Eingabedatei, 
08.
:: wobei der Pfad in der gleichnamigen Variable zwischengespeichert und 
09.
:: für jeden Pfad das eigentliche Verarbeitungs-Unterprogramm aufgerufen wird 
10.
for /f "usebackq delims=" %%i in ("%Ein%") do set "Pfad=%%~dpi" & call :ProcessLine 
11.
:: Ergebnis zur Kontrolle ausgeben 
12.
type "%Aus%" 
13.
:: Ende des Hauptprogrammes 
14.
goto :eof 
15.
 
16.
:ProcessLine 
17.
:: Wenn kein Root-Ordner, abschließenden \ abschneiden 
18.
if "%Pfad:~-2%" neq ":\" set "Pfad=%Pfad:~,-1%" 
19.
:: Falls die Ausgabedatei bereits den Pfad enthält, 
20.
:: kein Eintrag erforderlich und daher Rücksprung in das Hauptprogramm 
21.
findstr /i /x "%Pfad:\=\\%" "%Aus%">nul && goto :eof 
22.
:: Pfad der Ausgabedatei hinzufügen 
23.
>>"%Aus%" echo %Pfad% 
24.
:: Zurück zum Hauptprogramm 
25.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Biber
28.11.2010 um 15:16 Uhr
Moin extended.

keine Ahnung, ob das auch über ein Batchskript realisierbar wäre.

Ich würde es einfach über eine Halbzeile vom CMD-Prompt abfackeln.
Beispiel mit meinen *.pdfs im Verzeichnis d:\Biber\Dokus und darunter:
das führende ">" in der Eingabezeile ist Teil meines Prompts - nicht mit eingeben

(=15:15:43  d:\Biber\temp=) 
>for /r "d:\Biber\Dokus" /d %i in (*) do @if exist "%i\*.pdf" @echo %i 
d:\Biber\Dokus\BusinessObjects 
d:\Biber\Dokus\DB2 
d:\Biber\Dokus\ErWin 
d:\Biber\Dokus\Excel 
d:\Biber\Dokus\Links 
d:\Biber\Dokus\M$Scripting 
d:\Biber\Dokus\Oracle 
d:\Biber\Dokus\SQL 
d:\Biber\Dokus\ToolDoku 
d:\Biber\Dokus\VBS 
d:\Biber\Dokus\DB2\Addons_PDB 
d:\Biber\Dokus\DB2\Diverse addons 
d:\Biber\Dokus\M$Scripting\PowerShell_Workshop 
d:\Biber\Dokus\Oracle\Oracle-Tuts
Müsste auch mit einem Verzeichnis "c:\verschiedenes" klappen.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Teile eines Dateinamens ändern mit Batch Datei (4)

Frage von fffffuuuuuuuhhhh zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch: CPU-Auslastung eines Prozesses auslesen und als Variable definieren (2)

Frage von tralveller zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch um Benutzer aus Sitzung abzumelden (15)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst ZIP-Archive nach Dateien durchsuchen und Pfade ausgeben (33)

Frage von evinben zum Thema Batch & Shell ...

Router & Routing
Routingproblem in Homerouter-Kaskade mit Raspi (20)

Frage von Oldschool zum Thema Router & Routing ...

Server
Freenas schlechte Schreib Performance bei NFS (16)

Frage von janosch12 zum Thema Server ...

Windows Userverwaltung
gelöst TeamViewer mit Software Restriction Policy (9)

Frage von geocast zum Thema Windows Userverwaltung ...