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
GELÖST

Textdatei halbieren

Frage Entwicklung Batch & Shell

Mitglied: Pantherstyle

Pantherstyle (Level 1) - Jetzt verbinden

30.03.2009, aktualisiert 11:35 Uhr, 3619 Aufrufe, 13 Kommentare

Ich habe eine .txt Datei, die ich mit fc befüllt habe und die ich nun gerne auf die Hälfte reduziert hätte. In der Datei befinden sich verschieden viele Dateinamen, die untereinander geschrieben sind. Das fc was ich benutze, schreibt immer jeden Dateinamen 2mal in die Datei. Ich möchte, dass jeder Dateiname nur ein mal in die Datei geschrieben wird.
Hier der Inhalt der Datei:

ACMConvertDate.sql
BfxFctMasterGetOption.sql
UTIL_getDatePart.sql
UTIL_getFilename.sql
UTIL_isFileExistent.sql
zZz.txt
ACMConvertDate.sql
BfxFctMasterGetOption.sql
UTIL_getDatePart.sql
UTIL_getFilename.sql
UTIL_isFileExistent.sql
zZz.txt

Und hier das Script, dass sie erzeugt:

:: Erfassung der Revision von veränderten Dateien
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
for /F "tokens=1*" %%i IN (%HELP_PATH%\vorhanden.txt) DO (
fc %TAG_PATH%\%%i %BRANCH_PATH%\%%i
if ERRORLEVEL 1 echo %%i >> %HELP_PATH%\test.txt
)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Mitglied: bastla
30.03.2009 um 12:08 Uhr
Hallo Pantherstyle und willkommen im Forum!

Ich würde darauf tippen, dass die Wiederholung der Namen von einem zweiten Durchlauf des Batches stammt - wenn Du daher vorweg ein
if exist "%HELP_PATH%\test.txt" del "%HELP_PATH%\test.txt"
einfügst, sollten alle Namen nach dem nächsten Ausführen des Batches nur einmal vorhanden sein.

Grüße
bastla

P.S.: Zum Posten von Batches u. Ä. bitte "Code"-Formatierung benutzen ...
Bitte warten ..
Mitglied: Pantherstyle
30.03.2009 um 12:21 Uhr
Das habe ich schon kontrolliert, test.txt wurde vorher nicht erzeugt, weder durch das Batch selbst noch durch einen vorherigen Durchlauf. Also dopplung ausgeschlossen. Ich habe allerdings gesehen, dass er während der Ausführung die Daten 2mal durchläuft.
Bitte warten ..
Mitglied: bastla
30.03.2009 um 12:23 Uhr
Hallo Pantherstyle!

Dann stehen die Dateinamen vermutlich in "%HELP_PATH%\vorhanden.txt"zweimal drin ...

Grüße
bastla
Bitte warten ..
Mitglied: Pantherstyle
30.03.2009 um 12:26 Uhr
Nein ist ebenfalls überprüft. Sie stehen nur einzeln drin.
Bitte warten ..
Mitglied: Pantherstyle
30.03.2009 um 13:39 Uhr
Gibt es denn die Möglichkeit, die Batch einfach die Zeilen lesen zu lassen und die Hälfte der Zeilen zu löschen?
Bitte warten ..
Mitglied: bastla
30.03.2009 um 14:32 Uhr
Hallo Pantherstyle!

Das wäre mE der falsche Ansatz; sinnvoller wäre es, den Grund für die Verdoppelung herauszufinden.

Könntest Du einmal den gesamten Batch posten?

Grüße
bastla
Bitte warten ..
Mitglied: Pantherstyle
30.03.2009 um 14:41 Uhr
Gerne doch.

01.
echo off 
02.
:: 
03.
::Diese Batch Datei dient der Analyse von Dateien, auf Ihren ID Block 
04.
:: 
05.
 
06.
::Angabe der Pfade 
07.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
08.
set SEARCH_PATH=C:\Arbeitskopie\Suchordner 
09.
set HELP_PATH=C:\Arbeitskopie\Helfer 
10.
 
11.
::Erstellen des Indexes 
12.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
13.
rd %HELP_PATH% /s /q 
14.
mkdir %HELP_PATH% 
15.
cd %SEARCH_PATH% 
16.
dir > %HELP_PATH%\index.txt /B /S /-D /On 
17.
 
18.
find /V "svn" %HELP_PATH%\index.txt > %HELP_PATH%\filterindex.txt 
19.
 
20.
::Überprüfen auf Dateiinhalt 
21.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
22.
for /F "skip=2 tokens=4* delims=\" %%i IN (%HELP_PATH%\filterindex.txt) DO
23.
echo %%i 
24.
findstr /L :"$Id $Author $URL $LastChangedRevision $LastChangedDate $LastChangedBy" %SEARCH_PATH%\%%i 
25.
if ERRORLEVEL 1 echo %%i >> %HELP_PATH%\IDtreffer.txt 
26.
)
Bitte warten ..
Mitglied: bastla
30.03.2009 um 14:50 Uhr
Hallo Pantherstyle!

Geht's noch um das selbe Thema wie oben?

Grüße
bastla
Bitte warten ..
Mitglied: Pantherstyle
30.03.2009 um 14:53 Uhr
Ohh sorry hab mich im Topic vertan hab nur mit halbieren gelesen. Mom der komplette Batch (für dieses hier richtig) ist:

01.
echo OFF 
02.
:: 
03.
:: Batch-Datei zur Ausgabe einer Tabelle. Diese Tabelle enthält den Status der in  
04.
:: den angegebenen Verzeichnissen enthaltenen Daten. Diese Daten werden in "neu" 
05.
:: für seit der Erstellung des Tags hinzugelangten Dateien und "verändert" für seit 
06.
:: der Erstellung des Tags veränderten Dateien. 
07.
:: 
08.
 
09.
:: Veränderbar durch den Benutzer 
10.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
11.
:: Eingabe der Pfade 
12.
set TAG_PATH=C:\Arbeitskopie\trunk\M_Shell\FN 
13.
set BRANCH_PATH=C:\Arbeitskopie\trunk\T_Shell\FN 
14.
set HELP_PATH=C:\Arbeitskopie\Hilfsordnerbflexxdateien 
15.
set WORK_PATH=C:\Arbeitskopie\trunk\Daten\SoftwarePaket\Batch-Dateien 
16.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
17.
 
18.
 
19.
:: Ausgabe der Nutzerangaben 
20.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
21.
echo TAG Pfad   : %TAG_PATH% 
22.
echo Branch Pfad: %BRANCH_PATH% 
23.
echo Branch Pfad: %HELP_PATH% 
24.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
25.
 
26.
 
27.
:: Vorbereitung der Verarbeitung 
28.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
29.
rd %HELP_PATH% /s /q 
30.
mkdir %HELP_PATH% 
31.
cd %TAG_PATH% 
32.
dir > %HELP_PATH%\indextag.txt /B /S /-D /On 
33.
cd %BRANCH_PATH% 
34.
dir > %HELP_PATH%\indexbranch.txt /B /S /-D /On 
35.
 
36.
:: Herausfiltern der .sql Dateien 
37.
find /V "svn" %HELP_PATH%\indextag.txt > %HELP_PATH%\filtertag.txt 
38.
find /V "svn" %HELP_PATH%\indexbranch.txt > %HELP_PATH%\filterbranch.txt 
39.
 
40.
:: Löschen der Mittlerdateien 
41.
del %HELP_PATH%\indextag.txt 
42.
del %HELP_PATH%\indexbranch.txt 
43.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
44.
 
45.
 
46.
:: Überprüfen auf Dateizugehörigkeit 
47.
echo Die Dateien wurden vorbereitet, und werden nun auf ihre Zugehoerigkeit untersucht 
48.
echo Dieser Vorgang kann bis zu einigen Minuten dauern 
49.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
50.
:: Geloeschte Dateien 
51.
for /F "tokens=6* delims=\" %%i IN (%HELP_PATH%\filtertag.txt) DO
52.
findstr "%%i" %HELP_PATH%\filterbranch.txt 
53.
if ERRORLEVEL 1 echo %%i >> %HELP_PATH%\geloescht.txt 
54.
55.
:: Neue Dateien 
56.
for /F "tokens=6* delims=\" %%i IN (%HELP_PATH%\filterbranch.txt) DO
57.
findstr "%%i" %HELP_PATH%\filtertag.txt 
58.
if ERRORLEVEL 1 echo %%i >> %HELP_PATH%\neu.txt 
59.
60.
:: Bekannte Dateien 
61.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
62.
for /F "tokens=6* delims=\" %%i IN (%HELP_PATH%\filtertag.txt) DO
63.
findstr "%%i" %HELP_PATH%\filterbranch.txt 
64.
if not ERRORLEVEL 1 echo %%i >> %HELP_PATH%\vorhanden.txt 
65.
66.
for /F "tokens=6* delims=\" %%i IN (%HELP_PATH%\filterbranch.txt) DO
67.
findstr "%%i" %HELP_PATH%\filtertag.txt 
68.
if not ERRORLEVEL 1 echo %%i >> %HELP_PATH%\vorhanden.txt 
69.
70.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
71.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
72.
 
73.
 
74.
:: Erfassung der Revision von veränderten Dateien 
75.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
76.
for /F "tokens=1*" %%i IN (%HELP_PATH%\vorhanden.txt) DO
77.
fc %TAG_PATH%\%%i %BRANCH_PATH%\%%i 
78.
if ERRORLEVEL 1 echo %%i >> %HELP_PATH%\veraendert.txt 
79.
80.
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Bitte warten ..
Mitglied: bastla
30.03.2009 um 15:14 Uhr
Hallo Pantherstyle!

"vorhanden.txt" enthält die jeweiligen Dateien doppelt, was an den entbehrlichen Zeilen 66 bis 69 liegt - lass diese weg, und es sollte funktionieren ...

Grüße
bastla
Bitte warten ..
Mitglied: Pantherstyle
30.03.2009 um 15:22 Uhr
Das ist merkwürdig, es stimmt, dass die Zeilen überflüssig sind (bereits gelöscht). Alelrdings wird bei mir vorhanden.txt nur einmal befüllt, darin ist gar nichts doppelt!?
Bitte warten ..
Mitglied: bastla
30.03.2009 um 15:30 Uhr
Hallo Pantherstyle!

Wenn die Dateinamen nur einmal in "vorhanden.txt" stehen, werden sie in der "for"-Schleife (Zeile 76) nur einmal gelesen und können auch höchstens einmal (in Zeile 78) geschrieben werden ...

Grüße
bastla
Bitte warten ..
Mitglied: Pantherstyle
30.03.2009 um 15:42 Uhr
Naja also klappen tuts jetzt, ich nehme an da wird irgendwo nnoch ne Kopie im Zwischenspeicher gehangen haben. Ich danke dir erstmal.
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
Powershell - In Textdatei suchen und ersetzen (1)

Frage von Raaja89 zum Thema Batch & Shell ...

Java
gelöst Textdatei in Array speichern (zeilenweise) (1)

Frage von Bruchsal zum Thema Java ...

VB for Applications
Import Textdatei von Dateiname aus Zelle (2)

Frage von grasihuepfer zum Thema VB for Applications ...

Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...

DSL, VDSL
DSL-Signal bewerten (8)

Frage von SarekHL zum Thema DSL, VDSL ...