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, 4207 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 ..
Neuester Wissensbeitrag
Windows Update

Windows Update-Suche nach Win7 Neuinstallation wieder schneller

(1)

Erfahrungsbericht von the-buccaneer zum Thema Windows Update ...

Ähnliche Inhalte
Batch & Shell
gelöst Fenstertitel von anderen Tasks per batch auslesen (3)

Frage von NetMare zum Thema Batch & Shell ...

Batch & Shell
gelöst Systemvariable über Batch nicht abrufbar! (7)

Frage von Brotkasten zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch für File extension überprüfung und listenerstellungmit Zeit und Datum (2)

Frage von watch123 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Exchange Server
Bestehende eMails autoamatisch weiterleiten (21)

Frage von metal-shot zum Thema Exchange Server ...

Hyper-V
gelöst Reiner Hyper- V Server oder lieber Rolle (21)

Frage von Winuser zum Thema Hyper-V ...

SAN, NAS, DAS
gelöst Synology Version 6.1 Probleme (18)

Frage von Hendrik2586 zum Thema SAN, NAS, DAS ...

Router & Routing
gelöst IP Kamera für drei unabhängige Netzwerke (16)

Frage von ProfessorZ zum Thema Router & Routing ...