gelöst über batch nen text kürzen
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?
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?
5 Antworten
- LÖSUNG 90776 schreibt am 28.11.2010 um 11:01:36 Uhr
- LÖSUNG MiniStrator schreibt am 28.11.2010 um 11:04:37 Uhr
- LÖSUNG 76109 schreibt am 28.11.2010 um 11:20:40 Uhr
- LÖSUNG bastla schreibt am 28.11.2010 um 12:32:59 Uhr
- LÖSUNG Biber schreibt am 28.11.2010 um 15:16:56 Uhr
LÖSUNG 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
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
LÖSUNG 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ß
dir /b /s *.>textdatei.txt
Dann hast du zwar ne neue Textdatei aber das wird wurscht sein?
Gruß
LÖSUNG 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):
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
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
Desweiteren, werden nur Verzeichnispfade aufgelistet, die auch tatsächlich existieren.
Gruß Dieter
LÖSUNG 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):
Um sowohl den "\" zu verhindern als auch im Ergebnis Mehrfachnennungen des Pfades zu vermeiden, wäre dann doch ein Batch erforderlich:
Grüße
bastla
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
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
bastla
LÖSUNG 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
Müsste auch mit einem Verzeichnis "c:\verschiedenes" klappen.
Grüße
Biber
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
Grüße
Biber
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte