madej1
Goto Top

Letzen Zeilen löschen

Hab eine Frage. Ich les ein Verzeichnis aus:

Datentr„ger in Laufwerk E: ist Daten
Volumeseriennummer: xxxxx-xxxx

Verzeichnis von E:\*\html

27.11.2007 16:22 0 index.html
27.11.2007 15:24 22.952 index_favorites.html
27.11.2007 15:24 16.610 index_periodic.html
27.11.2007 15:24 1.627.698 PRUEF_V_A_STREET.html
28.11.2007 09:19 3.062 statistic_time.html
28.11.2007 09:19 3.062 temp.html
6 Datei(en) 1.673.384 Bytes
0 Verzeichnis(se), 121.650.913.280 Bytes frei

Hab des in einer Text datei stehen, aber ich bräuchte nur des:

index.html
index_favorites.html
index_periodic.html
PRUEF_V_A_STREET.html
statistic_time.html
temp.html

Wie kann ich mit batch einfach Die Letzten Zeilen löschen und die ersten 5.
Und es können auch mal mehhr dateien sein . Hab es mit sed probiert des schmeißt mir aber dann alles in eine Zeile...! Würde mich überhilfe freuen.

Hab es geschafft die ersten zeichen in jeder Zeile zu löschen jetzt hab ich noch den Schnippsel:
n


tml

index.html
index_favorites.html
index_periodic.html
PRUEF_V_A_STREET.html
statistic_time.html
temp.html
3.384 Bytes
1.650.909.184 Bytes frei
Da müssen nur noch die ersten 5Zeilen und die letzten 2 zeilen weg! Wie kann ich des machen?

Hab dann meinen Lösungweg gefunden... ist zwar n bisschen umständlich :D , aber falls es jemand interessiert:
@echo off
cd F:\html\
dir *.html>dir.txt
setlocal
set xy=36
set "Alt=E:\*\dir.txt"  
set "Neu=E:\*\dir.txt"  
set "Cut=%temp%\Cut.vbs"  
echo Set fso=CreateObject("Scripting.FileSystemObject"):aL=Split(fso.OpenTextFile(WScript.Arguments(0),1).ReadAll,vbCrLF)>"%Cut%"  
echo Set N=fso.OpenTextFile(WScript.Arguments(1),2,-1):P=WScript.Arguments(2)+1:For Each sL In aL: N.WriteLine Mid(sL,P):Next:N.Close>>"%Cut%"  
cscript //nologo "%Cut%" "%Alt%" "%Neu%" %xy%  
del "%Cut%"  

rem Zeile 1-5 Löschen
sed "1,5d" dir.txt > dir1.txt  
xcopy dir1.txt dir.txt /Y

rem letzte zeilen löschen
sed $d dir.txt > dir1.txt
xcopy dir1.txt dir.txt /Y
sed $d dir.txt > dir1.txt
xcopy dir1.txt dir.txt /Y
sed $d dir.txt > dir1.txt
xcopy dir1.txt dir.txt /Y
rem temp.html aus der Liste entfernen
call loeschen.vbs

rem leer zeilen löschen
FOR /F "delims=|" %%f IN (dir.txt) DO echo %%f >> dir2.txt   
xcopy dir2.txt dir.txt /Y
del dir2.txt

rem einlesen der Variablen
.
.
.

del dir1.txt
pause
die loschen.vbs
strFilename = "dir.txt"  
Set objFSO = CreateObject("Scripting.FileSystemObject")  
Set objFile = objFSO.GetFile(strFilename)
intFileSize = objFile.Size
Set objFile = objFile.OpenAsTextStream()
strFileContent = objFile.Read(intFileSize)
objFile.Close

Set objRegExp = New RegExp
objRegExp.Pattern = Chr(34)
objRegExp.Global = True
objRegExp.IgnoreCase = True             'False für case-sensitive  
strFileContent = objRegExp.Replace(strFileContent, "")  
objRegExp.Pattern = "temp.html"  
strFileContent = objRegExp.Replace(strFileContent, "")  
Set objFile = objFSO.OpenTextFile(strFilename, 2)
objFile.Write strFileContent
objFile.Close

Gruß Madej

Content-ID: 74669

Url: https://administrator.de/contentid/74669

Ausgedruckt am: 20.11.2024 um 10:11 Uhr

Biber
Biber 29.11.2007 um 10:35:56 Uhr
Goto Top
Moin Madej1,

Anmerkung:
Du könntest auch statt des Befehls "dir *.html>dir.txt" den Befehl "dir /b *.html>dir.txt" verwenden.

Der Schalter /b bedeutet auf neudeutsch soviel wie bare=einfach, schmucklos.
Oder für die MediaMarkt-Generation leichter zu merken "/b wie billich".

Dann hast Du gleich "nur" die Dateinamen.

Grüße
Biber
Madej1
Madej1 03.12.2007 um 09:46:05 Uhr
Goto Top
Vielen dank. Hab vergeblich nach so einem Schalter gesucht

gruß Madej