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

Wert in einer Abfrage wird nicht in Datei geschrieben

Frage Entwicklung Batch & Shell

Mitglied: christiank

christiank (Level 1) - Jetzt verbinden

23.05.2012, aktualisiert 15:58 Uhr, 2321 Aufrufe, 6 Kommentare

Hallo

ich habe ein CSV file welches mit Uhrzeiten befüllt ist.
Dieses CSV file sieht wie folgt aus:
01.
 0:00 
02.
 0:05 
03.
bis 
04.
23:45 
05.
23:50 
06.
23:55
Jetzt hab ich mir folgendes Script gebaut, welches alle 5 Minuten gestartet wird.

01.
@echo off 
02.
set TIME_HOUR=%time:~-11,2% 
03.
set TIME_MIN=%time:~-8,2% 
04.
 
05.
set LOG=Mappe.csv 
06.
set LOGNEW=%LOG:~0,-4%_temp.csv 
07.
 
08.
set USER=%random% 
09.
 
10.
FOR /F "tokens=1,2* delims=;" %%i in (%LOG%) do ( 
11.
IF "%%i" EQU "%TIME_HOUR%:%TIME_MIN%" ( 
12.
	echo Write: %%i;%%j;%USER% 
13.
	echo %%i;%%j;%USER%>>%LOGNEW% 
14.
) ELSE (  
15.
	echo %%i;%%j>>%LOGNEW% 
16.
17.
18.
del %LOG% 
19.
ren %LOGNEW% %LOG%
Leider wird der Wert %%i;%%j;%USER% nie in das file geschrieben. Ich verstehe jedoch nicht wieso das so ist.
Vielleicht hat ja jemand eine Idee zu meinem Problem.

Das CSV file sollte dann um beispielsweise 23:45 wie folgt aussehen:
01.
 0:00; 
02.
 0:05; 
03.
bis 
04.
23:45;0815 
05.
23:50; 
06.
23:55;
Danke schon mal.
Gruß
Christian

[Edit Biber] Codeformatieung [/Edit]
Mitglied: Skyemugen
23.05.2012, aktualisiert um 15:34 Uhr
Aloha,

1. möchte ich dich bitten, unsere schöne <code></code> Formatierung anzuwenden und edit: Biber war schneller
2. kann ich dir beim groben Überflug garantieren, dass es logisch ist, dass er zumindest zwischen 0:00 und 10:00 ins ELSE gehen wird, da %time:~-11,2% in dieser Zeit folgendes anzeigt: " h" und nicht "h" ergo ist "0:00" <> " 0:00".

greetz André
Bitte warten ..
Mitglied: christiank
23.05.2012 um 15:43 Uhr
Hallo André & Biber,

danke schon mal für die Antwort.
Habe jetzt auch schon <code></code> bei dem csv Teil verwendet.
Nun sieht man auch, dass das " 0:00" verwendet wird und somit sie bedingung erfüllt sein sollte.
Leider geht es nicht und ich hab einfach keine Idee wieso es so ist.

Vielleicht hat ja noch jemand eine Idee.

Gruß
Christian
Bitte warten ..
Mitglied: Skyemugen
23.05.2012, aktualisiert um 16:03 Uhr
Aloha Christian,

dann wird dein Skript nicht genau zum 5-Minuten-Zeitpunkt ausgeführt, denn ein kurzer Test bei mir ergab keine Probleme ... (Windows XP x86)

greetz André

P.S.: Zeile 1 ändern und anschauen, was wie befüllt wird und vor sich geht (ggf. in der cmd), schon getan?
Bitte warten ..
Mitglied: mak-xxl
23.05.2012, aktualisiert um 21:35 Uhr
Moin christiank,

nachdem ich mir das Ganze mehrmals angesehen habe, stellt sich mir zunehmend die Frage, was Du mit dem Script erreichen willst:

  • es startet ein Batchjob alle 5' (hoffentlich Minute mod 5 = 0),
  • der prüft, ob eine in der csv-Datei ('Mappe.csv') notierte Uhrzeit auf die aktuelle Uhrzeit (die nicht AM/PM sein darf) passt. (Das ist der Fall, wenn der Job von Sekunde 1 bis 60 der o.a. Minute den Vergleich durchführt - ok)
  • ist der Vergleich positiv, wird die Zeit aus der csv-Datei ('%%i') mit einem eventuell vorh. zweiten String ('%%j') und einem (zufälligen?) User-String an das Ende der temporären Log-Datei gehängt (Zeile 13),
  • diese wird abschließend wieder zur zu prüfenden 'Mappe.csv' gemacht (Zeilen 18+19).
  • ist der Vergleich negativ, wird die eben geprüfte Uhrzeit mit einem eventuell vorh. zweiten String ans Ende der temporären Log-Datei gehängt (Zeile 15),
  • weiter wie vorheriger Punkt.

Nach einem erfolgreichen Durchlauf ist die Datei mit genau einer Zeile Uhrzeit (letzter Treffer) ausgerüstet und wird - da sie als Uhrzeit-Vorlage herhalten muss (Zeile 10) - bei einem Vergleich erst wieder am nächsten Tag zur Uhrzeit einen Treffer liefern (falls die Minute stimmt), diese wird dann 2x drinstehen, 4x, 8x, usw. usf. ... bis die Laufzeit des Scriptes auf die bearbeitete Zeilenzahl begrenzend wirkt - resp. nach einer Minute keine Treffer mehr erfolgen und damit keine weiteren Zeilen mehr geschrieben werden.

Also, wenn Du Cron testen willst, ob der, über den Tag verteilt, wenigstens auf die Minute genau startet - hmm.

Was soll das Konstrukt bewirken?

Freundliche Grüße von der Insel - Mario
Bitte warten ..
Mitglied: pieh-ejdsch
23.05.2012, aktualisiert um 22:31 Uhr
moin Mario,

die CSV wird doch neu erstellt und umbenannt.
der Rest sollte aber ohne vornull berechnet werden.
set /a 1/(1%time:~-8,2% %%5) 2>nul >&2 &&echo Der Batch wurde nicht zum richtigen Zeitpunkt gestartet &&echo exit /b 1 ||echo %time:~-11,5% Taktung ist in Ordnung &&echo exit /b 0
Gruß Phil
Bitte warten ..
Mitglied: christiank
25.05.2012 um 16:19 Uhr
Die Idee war, eine CSV zu haben in der alle 5 Minuten ein Wert an die passende stelle geschrieben wird. So eine Art Auswertung. Das Script so wie es ist ist ja auch nicht komplett...
Statt dem Zufallswert, wird eine Zahl gespeichert, welche ich geliefert bekommen.
Selsamerweise funktioniert das Script nun.
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
VB for Applications
gelöst Abfrage, ob Datei mit Variablem Wert existiert (12)

Frage von Anrion zum Thema VB for Applications ...

Batch & Shell
Abfrage ob Datei von heute da ist (15)

Frage von pbelcl zum Thema Batch & Shell ...

PHP
MySQL-Abfrage mit php: Wert + true bzw. false (2)

Frage von tomolpi zum Thema PHP ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...