<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[von C++ aus batch aufrufen die files löscht die älter 14 Tage sind]]></title><description><![CDATA[<p>Hallo Forenuser !!</p>
<p>Vorweg ich habe lange in google gesucht und mir auch den Kopf zerbrochen aber ich steh jetzt leider auf der Leitung.</p>
<p>Ich schreibe gerade ein C++ file, leider unter Windows mit Visual Studio C++ express. Aus diesem Quellcode soll ich in einem bestimmten Ordner alle Dateien löschen die älter als 14 Tage alt sind.</p>
<p>Unter Unix hätte ich es schon gehabt. Ich kann auch keine Unix shell auf dem Windows Rechner installieren bzw. andere nützliche Tools die ich gefunden habe.(delage32...)</p>
<p>Somit bleibt mir also nur ein C++ Programm oder ein .bat file.</p>
<p>In C++ ist dies ganze sehr sehr umständlich hab ich festgestellt.<br />
Leider hab ich jetzt den Code nicht hier... also es könnte kleine Abweichungen geben.</p>
<pre><code class="language-cpp">system( &quot;date /T &gt; date.txt&quot; );
...pseudocode der erste Teil jetzt, funzt aber -&gt; werds aber noch mit get_date() von der C++ Bib. auslesen
char *date 
fin &gt;&gt; date // ab hier hab ich dann das aktuelle Datum
</code></pre>
<pre><code class="language-cpp">system(&quot;dir /b /O-D &gt; dateBOD.txt&quot;);  // Nur Namen enthalten

system(&quot;dir /O-D &gt; dateBO&quot;);          // Datum + Namen enthalten
</code></pre>
<p>/*hier hätte ich eigentlich alles aufgelistet. Nur wie soll ich in C++ ein Datum 14 Tage zurückrechnen ohne eine komplizierten Quellcode schreiben zu müssen ??<br />
Wenn es einfach geht dann hätte ich anschließend...</p>
<pre><code class="language-cpp">while(fin.good())
{
   // hier die Namen von dateBOD.txt einlesen und mit 
   system(&quot; del Variable&quot;);  
   // die files gelöschen

}
</code></pre>
<p>da dies aber auch kürzer geht zumindest in UNIX sollte des doch hoff ich in Windows auch gehen.</p>
<p>Hab folgendes gefunden aber ich verstehs ned so ganz.</p>
<p>// Die schreiben in eine Excel Datei spalten mit Datum rein<br />
// ich find das hier aber keine schöne Lösung -&gt; weil eben eine Excel Datei<br />
// auch noch dabei ist, außerdem ist auf dem System kein Excel installiert.<br />
// soll es auch nicht wenn möglich</p>
<pre><code>::----snipp lösche alle daten von vorgestern.bat 

//ok for verstanden 
// /f ?? 
// token er nimmt 2 zeichen 
// delims=; ??
// %%i ist variable ok
// findstr &quot;^..&quot;  was ist ^ ?? 
// geht des ganze hier drunter nicht einfachen ?? bzw. hat der consolen befehl // date nicht noch andere Attribute wie bei UNIX ?? 
for /f &quot;tokens=2 delims=;&quot; %%i in ('findstr &quot;^%date%&quot; &quot;c:\temp1\heutUndGestern.csv&quot;') do @set &quot;gestern=%%i&quot; 

for /R &quot;d:\&quot; %%i in (*.*) do @echo %%~ti|find &quot;%date%&quot;||@echo %%~ti|find &quot;%gestern%&quot;||@ECHO del /y &quot;%%~dpnxi&quot; 

for /D %%i in (d:\*.*) do @echo %%~ti|find &quot;%date%&quot;||@echo %%~ti|find &quot;%gestern%&quot;||@ECHO rd /s /q &quot;%%i&quot;
</code></pre>
<p>Falls ihr jetzt nicht wisst was ich benötige !!<br />
Entweder Tipps für eine Batch file das die Dateien löscht die älter als 14 Tage sind.<br />
Oder einen Tipp wie man Datums berechnungen macht!!</p>
<p>Ihr müsst hier keinen vollständigen Quellcode schreiben.</p>
<p>In C++ ist mir jetzt gerade ein kleiner Lichtblick eingefallen.<br />
Ich berechne das Datum auf Tage zurück.<br />
Ein Monat* 30 Tage + Tag im Monat = gesamt Tage im Jahr</p>
<p>Dann könnt mit int Variablen arbeiten und ca. 14 Tage einhalten.<br />
Dies soll jetzt aber nicht heissen mein Problem hat sich in Luft aufgelöst !!<br />
So a Batch file wär scho cool wenn ich des schaffen würd.</p>
<p>Viele Dank an jeden der mir hilft !!!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/248028/von-c-aus-batch-aufrufen-die-files-löscht-die-älter-14-tage-sind</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 08:07:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/248028.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 18 Aug 2009 19:17:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to von C++ aus batch aufrufen die files löscht die älter 14 Tage sind on Tue, 18 Aug 2009 19:17:59 GMT]]></title><description><![CDATA[<p>Hallo Forenuser !!</p>
<p>Vorweg ich habe lange in google gesucht und mir auch den Kopf zerbrochen aber ich steh jetzt leider auf der Leitung.</p>
<p>Ich schreibe gerade ein C++ file, leider unter Windows mit Visual Studio C++ express. Aus diesem Quellcode soll ich in einem bestimmten Ordner alle Dateien löschen die älter als 14 Tage alt sind.</p>
<p>Unter Unix hätte ich es schon gehabt. Ich kann auch keine Unix shell auf dem Windows Rechner installieren bzw. andere nützliche Tools die ich gefunden habe.(delage32...)</p>
<p>Somit bleibt mir also nur ein C++ Programm oder ein .bat file.</p>
<p>In C++ ist dies ganze sehr sehr umständlich hab ich festgestellt.<br />
Leider hab ich jetzt den Code nicht hier... also es könnte kleine Abweichungen geben.</p>
<pre><code class="language-cpp">system( &quot;date /T &gt; date.txt&quot; );
...pseudocode der erste Teil jetzt, funzt aber -&gt; werds aber noch mit get_date() von der C++ Bib. auslesen
char *date 
fin &gt;&gt; date // ab hier hab ich dann das aktuelle Datum
</code></pre>
<pre><code class="language-cpp">system(&quot;dir /b /O-D &gt; dateBOD.txt&quot;);  // Nur Namen enthalten

system(&quot;dir /O-D &gt; dateBO&quot;);          // Datum + Namen enthalten
</code></pre>
<p>/*hier hätte ich eigentlich alles aufgelistet. Nur wie soll ich in C++ ein Datum 14 Tage zurückrechnen ohne eine komplizierten Quellcode schreiben zu müssen ??<br />
Wenn es einfach geht dann hätte ich anschließend...</p>
<pre><code class="language-cpp">while(fin.good())
{
   // hier die Namen von dateBOD.txt einlesen und mit 
   system(&quot; del Variable&quot;);  
   // die files gelöschen

}
</code></pre>
<p>da dies aber auch kürzer geht zumindest in UNIX sollte des doch hoff ich in Windows auch gehen.</p>
<p>Hab folgendes gefunden aber ich verstehs ned so ganz.</p>
<p>// Die schreiben in eine Excel Datei spalten mit Datum rein<br />
// ich find das hier aber keine schöne Lösung -&gt; weil eben eine Excel Datei<br />
// auch noch dabei ist, außerdem ist auf dem System kein Excel installiert.<br />
// soll es auch nicht wenn möglich</p>
<pre><code>::----snipp lösche alle daten von vorgestern.bat 

//ok for verstanden 
// /f ?? 
// token er nimmt 2 zeichen 
// delims=; ??
// %%i ist variable ok
// findstr &quot;^..&quot;  was ist ^ ?? 
// geht des ganze hier drunter nicht einfachen ?? bzw. hat der consolen befehl // date nicht noch andere Attribute wie bei UNIX ?? 
for /f &quot;tokens=2 delims=;&quot; %%i in ('findstr &quot;^%date%&quot; &quot;c:\temp1\heutUndGestern.csv&quot;') do @set &quot;gestern=%%i&quot; 

for /R &quot;d:\&quot; %%i in (*.*) do @echo %%~ti|find &quot;%date%&quot;||@echo %%~ti|find &quot;%gestern%&quot;||@ECHO del /y &quot;%%~dpnxi&quot; 

for /D %%i in (d:\*.*) do @echo %%~ti|find &quot;%date%&quot;||@echo %%~ti|find &quot;%gestern%&quot;||@ECHO rd /s /q &quot;%%i&quot;
</code></pre>
<p>Falls ihr jetzt nicht wisst was ich benötige !!<br />
Entweder Tipps für eine Batch file das die Dateien löscht die älter als 14 Tage sind.<br />
Oder einen Tipp wie man Datums berechnungen macht!!</p>
<p>Ihr müsst hier keinen vollständigen Quellcode schreiben.</p>
<p>In C++ ist mir jetzt gerade ein kleiner Lichtblick eingefallen.<br />
Ich berechne das Datum auf Tage zurück.<br />
Ein Monat* 30 Tage + Tag im Monat = gesamt Tage im Jahr</p>
<p>Dann könnt mit int Variablen arbeiten und ca. 14 Tage einhalten.<br />
Dies soll jetzt aber nicht heissen mein Problem hat sich in Luft aufgelöst !!<br />
So a Batch file wär scho cool wenn ich des schaffen würd.</p>
<p>Viele Dank an jeden der mir hilft !!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763082</guid><dc:creator><![CDATA[AJAF]]></dc:creator><pubDate>Tue, 18 Aug 2009 19:17:59 GMT</pubDate></item><item><title><![CDATA[Reply to von C++ aus batch aufrufen die files löscht die älter 14 Tage sind on Tue, 18 Aug 2009 20:00:33 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Das könnte dich interessieren:<br />
<a href="http://www.mcseboard.de/windows-forum-allgemein-28/mittels-powershell-dateien-bestimmtem-datum-loeschen-104512.html" rel="nofollow">http://www.mcseboard.de/windows-forum-allgemein-28/mittels-powershell-dateien-bestimmtem-datum-loeschen-104512.html</a></p>
<p>Ansonsten kannst du Datumsberechnungen mit den in der time.h deklarierten Funktionen machen. Für die Zeitdifferenz z.B. ist die Funktion difftime ganz brauchbar.<br />
<a href="http://www.cplusplus.com/reference/clibrary/ctime/difftime/" rel="nofollow">http://www.cplusplus.com/reference/clibrary/ctime/difftime/</a></p>
<p>Auf Batchdateien würde ich verzichten. Du kannst dir mit dirent.h<br />
<a href="http://en.wikipedia.org/wiki/Dirent.h" rel="nofollow">http://en.wikipedia.org/wiki/Dirent.h</a><br />
fstat, stat etc. etwas halbwegs portables bauen.</p>
<p>Gruß,<br />
B.B.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763104</guid><dc:creator><![CDATA[Big Brother]]></dc:creator><pubDate>Tue, 18 Aug 2009 20:00:33 GMT</pubDate></item><item><title><![CDATA[Reply to von C++ aus batch aufrufen die files löscht die älter 14 Tage sind on Tue, 18 Aug 2009 20:09:22 GMT]]></title><description><![CDATA[<p>Wie du wahrscheinlich schon festgestellt hast gibt es da zwischen den einzelnen Windows-Versionen Unterschiede <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>Hier mal ein Überblick zur Shell unter Linux und Windows:<br />
<a href="http://de.wikipedia.org/wiki/Windows_PowerShell" rel="nofollow">http://de.wikipedia.org/wiki/Windows_PowerShell</a></p>
<p>Was auch gehen sollte: Wenn du sämtliche Möglichkeiten der Batch nutzt, könnte das nur mit Batch realisiert werden.</p>
<p>Einfacher ist wahrscheinlich, wenn du in C++ das aktuelle Datum abfragst, die 14 Tage berücksichtigst und eine Batch mit entsprechender Argumentenübergabe startest.</p>
<p>Aber da sollten mehrere Wege nach Rom führen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>MfG f.-th.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763107</guid><dc:creator><![CDATA[f.-th.]]></dc:creator><pubDate>Tue, 18 Aug 2009 20:09:22 GMT</pubDate></item><item><title><![CDATA[Reply to von C++ aus batch aufrufen die files löscht die älter 14 Tage sind on Tue, 18 Aug 2009 20:11:53 GMT]]></title><description><![CDATA[<p>P.S.<br />
Hier noch etwas zu Batchdateien:<br />
<a href="http://www.administrator.de/Dateidatum_mit_Batch-Datei_auslesen.html" rel="nofollow">http://www.administrator.de/Dateidatum_mit_Batch-Datei_auslesen.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763109</guid><dc:creator><![CDATA[Big Brother]]></dc:creator><pubDate>Tue, 18 Aug 2009 20:11:53 GMT</pubDate></item><item><title><![CDATA[Reply to von C++ aus batch aufrufen die files löscht die älter 14 Tage sind on Tue, 18 Aug 2009 20:26:51 GMT]]></title><description><![CDATA[<p>Danke vorerst für die tollen Tipps von euch beiden !!</p>
<p>Werd jetzt erst mal Zeit brauchen das zu verarbeiten : )<br />
meld mich dann !!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763111</guid><dc:creator><![CDATA[AJAF]]></dc:creator><pubDate>Tue, 18 Aug 2009 20:26:51 GMT</pubDate></item><item><title><![CDATA[Reply to von C++ aus batch aufrufen die files löscht die älter 14 Tage sind on Tue, 18 Aug 2009 20:38:18 GMT]]></title><description><![CDATA[<p>P.S. P.S.<br />
Ich habe mir vorhin die dirent.h für Windows runtergeladen<br />
<a href="http://en.wikipedia.org/wiki/Dirent.h" rel="nofollow">http://en.wikipedia.org/wiki/Dirent.h</a><br />
ganz unten ist der Link für die Windows Bibliothek.</p>
<p>Alle Dateinamen eines Ordners bekommst du so:</p>
<pre><code class="language-cpp">DIR *dp = NULL;  
	struct dirent *ep = NULL; 

	if ( NULL == ( dp = opendir(&quot;C:\\&quot;)))
		return 1;

	while ( ep = readdir ( dp ))
	{ 
		if ( &quot;.&quot; == ep-&gt;d_name || &quot;..&quot; == ep-&gt;d_name )
			continue;
		cout &lt;&lt; ep-&gt;d_name &lt;&lt; endl; // Nur mal so zum Gucken.
		// Hier mit fstat arbeiten.
		// Das Erstellungsdatum ist im member st_ctime gespeichert.
// http://msdn.microsoft.com/en-us/library/aa246905(VS.60).aspx

	}
	closedir(dp);
</code></pre>
<p>Das sollte halbwegs portabel sein, wenn du die zugehörigen Bibliotheken hast.<br />
Die Kommentare helfen dir, das Erstellungsdatum einer Datei zu bestimmen.<br />
Diesen Weg würde ich einer Batschlösung vorziehen.<br />
Gruß,<br />
B.B.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1763114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1763114</guid><dc:creator><![CDATA[Big Brother]]></dc:creator><pubDate>Tue, 18 Aug 2009 20:38:18 GMT</pubDate></item></channel></rss>