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

Verschachtelungen mit for schleifen

Frage Entwicklung Batch & Shell

Mitglied: brainbug84

brainbug84 (Level 1) - Jetzt verbinden

12.12.2008, aktualisiert 22:05 Uhr, 2964 Aufrufe, 1 Kommentar

Hi zusammen,

ich habe folgendes Problem. Ich habe mehrere Textdateien (dat1,dat2,dat3,dat4). Den Inhalt von 2,3,4 möchte ich in Datei 1 schreiben, jedoch ohne die ersten 3 Zeilen (Skip=3) und ohne die letzten 7 Zeilen(habe ich durch eine for-Schleife dahingehend implementiert, dass ich mir die Anzahl der Zeilen in einer Variablen speichere und anschließend nur die Zeilen rausschreibe ohne die letzten 7. Nun habe ich noch eine forschleife deren die ich benötige um die dateien hochzuhzaehlen, das es unterschiedliche viele geben kann, also dat1-18 bspw.

Alleine funktionieren die Schleifen glaube ich, nur wenn ich es versuche zu vermischen geht gar nix mehr.

Könnt ihr mir vielleicht sagen was es mit dem @ vor den anweisungen auf sich hat also bspw.

for /f "tokens=1,* delims=:" %%i in ('findstr /n $ test.txt') do @(for /L %%a in (2,2,6) do @if %%i==%%a @echo %%j

01.
 
02.
set /a i=8   //beispielwert für anzahl der dateien 
03.
 
04.
set /a zaehler2=2 //zaehler fängt bei 2 an, da ab der zweiten datei der inhalt in die erste datei soll 
05.
set /a k=%i%-2 //anzahl der schritte von 2-8 => 6 
06.
 
07.
/* 
08.
*Hier wird geschaut wieviel Zeilen die jeweilige Datei hat und das k-mal(hier sechs mal). Das ergebnis soll in count gespeichert werden. 
09.
*/ 
10.
for /L %%b in (1,1,%k%) do (FOR /f "tokens=1,* delims=:" %%f IN ('findstr /n . dat%zaehler2%') DO set /a count=%%f  
11.
set /a rest=%count%-7 //Variable für ausgabe ohne letzte 7 zeilen 
12.
for /f "skip=3 tokens=1,* delims=:" %%h in ('findstr /n  . dat%zaehler2%') do @(for /L %%a in (1,1,%rest%) do @if %%h==%%a echo %%j ) >>dat1  //Hier sollen die Infos ab zeile 4 bis zur 7letzten zeile in dat1 eingefügt werden 
13.
set /a zaehler2 = %zaehler2%+1 //Zaehler für die Dateien 
14.
)
Danke für die Hilfe, ich hoffe jemand versteht meine Ausführungen
Mitglied: bastla
12.12.2008 um 22:05 Uhr
Hallo brainbug84!

Schleifen lassen sich auch anders konstruieren:
01.
@echo off & setlocal 
02.
set /a Anzahl=8 
03.
set /a zaehler2=2 
04.
 
05.
:Loop 
06.
FOR /f "tokens=1,* delims=:" %%f IN ('findstr /n "^" "dat%zaehler2%"') DO set /a count=%%f  
07.
set /a bis=%count%-7 
08.
for /f "skip=3 tokens=1,* delims=:" %%i in ('findstr /n "^" "dat%zaehler2%"') do if %%i leq %bis% >>"dat1" echo %%j 
09.
set /a zaehler2+=1 
10.
if %zaehler2% leq %Anzahl% goto :Loop
Kommentare werden übrigens in Batch entweder mit REM oder mit :: eingeleitet - sollen sie auch noch an eine Codezeile angefügt werden, dann etwa so:
echo Das wird ausgegeben & REM und das nicht
Könnt ihr mir vielleicht sagen was es mit dem @ vor den anweisungen auf sich hat
Wenn Du kein "echo off" setzt, werden Befehle vor der Ausführung zunächst einmal angezeigt. Mit dem vorangestellen "@" kannst Du diese Anzeige gezielt für einzelne Befehle unterdrücken, also etwa
for /L %i in (1,1,5) do echo Zeile %i mit Vorab-Anzeige
vs
for /L %i in (1,1,5) do @echo Zeile %i ohne Vorab-Anzeige
Beide Beispiele sind (wie am einfachen "%" für die Laufvariable zu erkennen) für die Direkteingabe an der Kommandozeile gedacht.

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

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

(1)

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

Ähnliche Inhalte
Datenbanken
gelöst Schleifen in SQL-Abfrage bei 2 Tabellen (2)

Frage von Aximand zum Thema Datenbanken ...

Batch & Shell
gelöst Batch: (at)set und (at)echo in For-Schleifen? und mehr (8)

Frage von Ben.Blake.79 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (14)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...