Top-Themen

Aktuelle Themen (A bis Z)

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

Parameterübergabe in Schleife

Frage Entwicklung Batch & Shell

Mitglied: c-az-h

c-az-h (Level 1) - Jetzt verbinden

12.01.2012, aktualisiert 10:19 Uhr, 3259 Aufrufe, 5 Kommentare

Braeuchte Hilfe, da anscheinend meinerseits ein Verstaendnissproblem bei der Parameterübergabe besteht.

Folgend der Quelltext meines kleinen Programms, welches eine 3er Zahlenkombination ausführen soll (unterschiedliche), jedoch nicht, wenn die Führende eine 0 ist, und nur die Null zwei mal in Folge auftreten darf.
Dies wird in eine Datei geschrieben, und nun sollte, wenn die Dateigröße größer 10 KB wird, eine Neue Datei angelegt werden. Es wird aber sofort, wenn die 10 KB der ersten Datei erreicht sind, für jeden folgenden Eintrag eine Datei erstellt, was mich vermuten läßt das immerwieder nur nach der ersten Datei geschaut wird.
01.
@echo off & setlocal 
02.
SET M=0 1 2 3 4 5 6 7 8 9 
03.
SET N=0 
04.
SET X="Liste03%i%.txt" 
05.
SET Size=10000 
06.
SET y=1 
07.
 
08.
FOR %%a IN (%M%) DO ( 
09.
 IF %%a NEQ 0 ( 
10.
  FOR %%b IN (%M%) DO ( 
11.
   FOR %%c IN (%M%) DO ( 
12.
    :weiter 
13.
    IF %%a NEQ %%b IF %%b NEQ %%c ( 
14.
     ECHO %%a%%b%%c>>%X% 
15.
16.
    FOR %%z IN (%N%) DO ( 
17.
     IF %%z EQU %%c IF %%a NEQ %%b IF %%a NEQ 0 ( 
18.
      ECHO %%a%%b%%c>>%X% 
19.
20.
21.
    FOR %%j IN (%X%) DO ( 
22.
     IF %%~zj GEQ %Size% ( 
23.
     GOTO var 
24.
25.
26.
27.
28.
29.
30.
 
31.
:var 
32.
SET /A y+=1 
33.
rem echo %y% 
34.
SET X="Liste03%y%.txt" 
35.
GOTO weiter
[Edit Biber] Codeformatierung. [/Edit]
Mitglied: pieh-ejdsch
12.01.2012 um 12:58 Uhr
moin c-az-h,
wir Begrüßen uns meist.

Du schreibst doch aber pro Zeile nur 5 Byte wieso kommst Du bei 890 (891) Zeilen auf über 10 kB?
(for /l %i in (101 1 999) do @echo %i)|findstr /v 00 >datei.txt
Existieren die Liste*.txt schon?

Der Sprung aus der Forschleife wird zwar gemacht, aber der Sprung hinein geht nicht mehr, und die Klammern stimmem nicht mehr.
Die Marke :Weiter befindet sich zu diesem Hingang nicht mehr in einer Schleife.
Danach wird der Rest der Schleife ganz normal ausgeführ und die Datei wird mit dem Rest Vollgeschrieben.

Vieleicht ist es Besser die Größe der Ausgabedatei vorher zu bestimmen und von der Endgröße diesen Wert abzuziehen Durch 5 zu teilen und dieses Ergebnis anstatt dem Endwert in der For /L Schleife einzufügen.
Ungetestet
01.
@echo off &setlocal 
02.
set /a Anfang = 101 
03.
set /a Ende = 999 
04.
 
05.
set Name=D:\Liste03 
06.
set /a Nr = 0 
07.
set Ext=.txt 
08.
 
09.
set /a Size = 10000 
10.
 
11.
:begin 
12.
set /a Nr +=1 
13.
for %i in (%Name%%Nr%%ext%) do set /a FSize=%~zi 
14.
set /a FEnde = Ende - (Size - Fsize) / 5 
15.
if %Fende% gtr %ende% set /a Fende = Ende 
16.
 
17.
(for /l %%i in (%Anfang% 1 %FEnde%) do @echo %%i)|findstr /v 00 1>>"%Name%%Nr%%ext%" 
18.
set /a Anfang = FEnde 
19.
 
20.
if %FEnde% neq %Ende% goto :begin
[edit]
Variable berichtigt
[/edit]
Gruß Phil
Bitte warten ..
Mitglied: c-az-h
12.01.2012 um 14:37 Uhr
Hallo Phil,

danke für die Antwort.
Ich habe das Skript für die Anfrage hier etwas gekürzt, da es sonst eigentlich eine Permutation über die Zahlen und das Alphabet machen soll -> was dann mehr als die 10 KB sind.
Deinen Vorschlag probiere ich mal aus.

Mal sehen wie weit ich komme, auch wenn ich das Problem mit der Sprungmarke nur als gegeben hin nehmen kann, da ich dachte, der Code wird so ausgeführt, wie er da steht, und nicht das eine Konsistenzprüfung stattfindet, ob die Schleife schon geschlossen ist.

Gruß - CA
Bitte warten ..
Mitglied: pieh-ejdsch
12.01.2012 um 14:41 Uhr
verstehe nur nicht, warum Du die Variable "Beginn" setzt
Schusselfehler! sollte Anfang heisen.

Die Schleife bleibt ja so wie sie ist und wird bis zum Schluss durchgezogen (wenn ein goto :eof in Zeile 30 wäre).
So bleibt Die Schleife offen genau an der Zahl, welche zuletzt geschrieben wurde.

Der Denkfehler liegt im Goto :SprungMarke in der Schleife.
Das GOTO macht was es soll - es wird jede nachfolgende Zeile des Batches nach der :SprungMarke durchsucht.
Wird diese nicht gefunden wird von vorne neu Angefangen mit suchen dieser Marke.
In Zeile 12 Deines Batches ist die Marke und danach wird normal verglichen
if %a NEQ %b usw...
doppelte Prozente werden zu einem und %a%b%c steht in jeder neuen Datei

Die Schließende Klammer macht als Befehl aber keine Fehlermeldung oder anderes.
Dann kommt der Vergleich der Größe der neuen Datei (die Variablen werden ja normal Aufgelöst) und weil das goto :eof in Zeile 30 Fehlt kommt der Batch irgendwann wo an ?
:var
wäre goto :eof da würde der Rest der Forschleife ausgeführt werden aber trotzdem den Rest der Zahlen in die 1. Datei schreiben, weil in der Schleife die Variable X noch die vom Anfang ist.

und da geht der Kreis wieder von vorn los.

Gruß Phil
Bitte warten ..
Mitglied: pieh-ejdsch
12.01.2012 um 23:38 Uhr
Den KilometerZähler könntest Du zumindest Einfacher gestalten:
01.
@echo off &setlocal 
02.
set "Index=0 1 2 3 4 5 6 7 8 9 a b c - z" 
03.
 
04.
set /a KeySize = 7 
05.
 
06.
set /a size =10000 
07.
 
08.
set /a Lines = size /( KeySize +2 ) 
09.
set /a ISize = 1 
10.
 
11.
for %%i in (%index:~2%) do set "Key=%%i" &call :begin 
12.
goto :eof 
13.
 
14.
:begin 
15.
set /a ISize +=1 
16.
for %%j in (%index%) do if %ISize% equ %KeySize% (echo(%Key%%%j) else (set "Key=%Key%%%j"&call :begin) 
17.
set /a ISize -= 1&goto :eof
Gruß Phil
Bitte warten ..
Mitglied: c-az-h
13.01.2012 um 15:40 Uhr
Hallo Phil,

danke für die Hinweise.
Habe herausgefunden, das es ein Klammerproblem zu sein scheint.
Habe es nun so gelöst, daß bei erreichen einer bestimmten Größe, eine weitere Datei aufgerufen wird, die durchzählt wieviel Textdateien da sind, und dann die vorhandene einfach umbenennt.

Markiere den Fall dann als gelöst.

Danke - CA
Bitte warten ..
Ähnliche Inhalte
VB for Applications
Parameterübergabe
gelöst Frage von Gimli3311VB for Applications5 Kommentare

Guten Tag Zusammen, ich brauch mal wieder eure Hilfe. Und zwar suche ich mit der Methode find entweder nach ...

Visual Studio
Parameterübergabe an XLL?
gelöst Frage von MarcoBornVisual Studio

Hallo Forum, ist es möglich, per VB.NET einer XLL einen Parameter mitzugeben, der dort ausgewertet werden kann? Ich habe ...

Batch & Shell
Erstellen von Verknüpfungen - Parameterübergabe, Leerzeichen im Pfad
gelöst Frage von AlfornoBatch & Shell13 Kommentare

Hallo, ich möchte gerne per Batch und vbs eine Verknüpfung auf eine pdf erstellen, die im Netzwerk liegt. Hier ...

Python
Tkinter Button Klick und Parameterübergabe
Frage von tobmesPython1 Kommentar

Hi, ich spiele gerade mit Python rum und bin dabei auch auf Tkinter gestossen. Ich habe das folgende Problem. ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 3 StundenWindows 10

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 5 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 19 StundenInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 23 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte15 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...