<?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[findfirstfile dateiendung in unterverzeihnissen]]></title><description><![CDATA[<p>hallo alle,</p>
<p>ich habe kleines problem.<br />
ich möchte ordner (inc. unterordner) durchsuchen, dabei will ich nur bestimmte dateientypen suchen (z.b. nur .exe dateien)</p>
<p>so habe ich das gemacht, funzt aber nur auf bedingt also:<br />
wenn ich die zeile</p>
<pre><code class="language-cpp">strcat (szPath, &quot;*.*&quot;) ;
</code></pre>
<p>dann geht das programm alle unterverzeihnisse durch, aber halt ohne auf die dateiendung zu achten.<br />
aber wenn ich die dateiendung einsetze</p>
<pre><code class="language-cpp">strcat (szPath, &quot;*.exe&quot;) ;
</code></pre>
<p>dann gehet das prog nicht in die unterverzeichnisse... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>nun, was soll ich machen?<br />
wird noch eine funktion mit FindFirstFile eingesetzt und mit der meinen verschachtelt?</p>
<p>bitte um hilfe.</p>
<p>hier mein code bis jetzt:</p>
<pre><code class="language-cpp">void fFindData (const char *szChrStartPath){
	char			szPath[MAX_PATH],
					szMsg[MAX_PATH] ;
	WIN32_FIND_DATA	data ;
	HANDLE			handle ;
	strcpy (szPath, szChrStartPath) ;
	if (szPath[strlen (szPath)-1] != '\\'){
		strcat (szPath, &quot;\\&quot;) ;
	}
	strcat (szPath, &quot;*.*&quot;) ;
	handle = FindFirstFile (szPath, &amp;data) ;
	if (handle != INVALID_HANDLE_VALUE){
		do{
			if (!((data.cFileName[0]=='.') &amp;&amp; ((data.cFileName[1]=='.' &amp;&amp; data.cFileName[2]==0) || data.cFileName[1]==0 ))){
				if (data.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY){
					sprintf (szMsg, &quot;%s\\%s&quot;, szChrStartPath, data.cFileName) ;
					fFindData (szMsg) ;
				}
				else{
					//
					//hier gebe ich die Dateien in einem fenster aus
					//
					}
				}
			}
		}
		while (FindNextFile (handle, &amp;data)) ;
	}
	FindClose (handle) ;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/124117/findfirstfile-dateiendung-in-unterverzeihnissen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 16:12:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/124117.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 24 Oct 2005 06:50:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to findfirstfile dateiendung in unterverzeihnissen on Mon, 24 Oct 2005 06:50:43 GMT]]></title><description><![CDATA[<p>hallo alle,</p>
<p>ich habe kleines problem.<br />
ich möchte ordner (inc. unterordner) durchsuchen, dabei will ich nur bestimmte dateientypen suchen (z.b. nur .exe dateien)</p>
<p>so habe ich das gemacht, funzt aber nur auf bedingt also:<br />
wenn ich die zeile</p>
<pre><code class="language-cpp">strcat (szPath, &quot;*.*&quot;) ;
</code></pre>
<p>dann geht das programm alle unterverzeihnisse durch, aber halt ohne auf die dateiendung zu achten.<br />
aber wenn ich die dateiendung einsetze</p>
<pre><code class="language-cpp">strcat (szPath, &quot;*.exe&quot;) ;
</code></pre>
<p>dann gehet das prog nicht in die unterverzeichnisse... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>nun, was soll ich machen?<br />
wird noch eine funktion mit FindFirstFile eingesetzt und mit der meinen verschachtelt?</p>
<p>bitte um hilfe.</p>
<p>hier mein code bis jetzt:</p>
<pre><code class="language-cpp">void fFindData (const char *szChrStartPath){
	char			szPath[MAX_PATH],
					szMsg[MAX_PATH] ;
	WIN32_FIND_DATA	data ;
	HANDLE			handle ;
	strcpy (szPath, szChrStartPath) ;
	if (szPath[strlen (szPath)-1] != '\\'){
		strcat (szPath, &quot;\\&quot;) ;
	}
	strcat (szPath, &quot;*.*&quot;) ;
	handle = FindFirstFile (szPath, &amp;data) ;
	if (handle != INVALID_HANDLE_VALUE){
		do{
			if (!((data.cFileName[0]=='.') &amp;&amp; ((data.cFileName[1]=='.' &amp;&amp; data.cFileName[2]==0) || data.cFileName[1]==0 ))){
				if (data.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY){
					sprintf (szMsg, &quot;%s\\%s&quot;, szChrStartPath, data.cFileName) ;
					fFindData (szMsg) ;
				}
				else{
					//
					//hier gebe ich die Dateien in einem fenster aus
					//
					}
				}
			}
		}
		while (FindNextFile (handle, &amp;data)) ;
	}
	FindClose (handle) ;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/899738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899738</guid><dc:creator><![CDATA[keineIdee]]></dc:creator><pubDate>Mon, 24 Oct 2005 06:50:43 GMT</pubDate></item><item><title><![CDATA[Reply to findfirstfile dateiendung in unterverzeihnissen on Mon, 24 Oct 2005 06:53:21 GMT]]></title><description><![CDATA[<p>keineIdee schrieb:</p>
<blockquote>
<p>aber wenn ich die dateiendung einsetze</p>
<pre><code class="language-cpp">strcat (szPath, &quot;*.exe&quot;) ;
</code></pre>
<p>dann gehet das prog nicht in die unterverzeichnisse... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Doch, aber nur in die Unterverzeichnisse mit der Erweiterung &quot;.exe&quot;. Solche hast du vermutlich nicht.</p>
<p>Wenn du alle Unterverzeichnisse willst, musst du die getrennt von den Dateien suchen, mit &quot;<em>.</em>&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/899741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899741</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 24 Oct 2005 06:53:21 GMT</pubDate></item><item><title><![CDATA[Reply to findfirstfile dateiendung in unterverzeihnissen on Mon, 24 Oct 2005 07:07:14 GMT]]></title><description><![CDATA[<p>[quote=&quot;MFK]Wenn du alle Unterverzeichnisse willst, musst du die getrennt von den Dateien suchen, mit &quot;<em>.</em>&quot;.[/quote]</p>
<p>das ist mir klar, aber wie verschachtle ich die beiden funktionen mit den suchpaths <em>.</em> und *.exe ?</p>
<p>etwas code plss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/899756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899756</guid><dc:creator><![CDATA[keineIdee]]></dc:creator><pubDate>Mon, 24 Oct 2005 07:07:14 GMT</pubDate></item><item><title><![CDATA[Reply to findfirstfile dateiendung in unterverzeihnissen on Mon, 24 Oct 2005 07:09:15 GMT]]></title><description><![CDATA[<p>Ich würde eher alle Dateien suchen und für EXE-Dateien eine entsprechende Sonderbehandlung ansetzen:</p>
<pre><code class="language-cpp">char* name=data.cFileName;
if (!strcmp(name,&quot;.&quot;)&amp;&amp;!strcmp(name,&quot;..&quot;)
{
  if (data.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY)
  {
    sprintf (szMsg, &quot;%s\\%s&quot;, szChrStartPath, data.cFileName) ;
    fFindData (szMsg) ;
  }
  else if(strcmp(name+strlen(name)-4,&quot;.exe&quot;){
    //
    //hier gebe ich die Dateien in einem fenster aus
    //
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/899757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899757</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 24 Oct 2005 07:09:15 GMT</pubDate></item><item><title><![CDATA[Reply to findfirstfile dateiendung in unterverzeihnissen on Mon, 24 Oct 2005 07:29:55 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Ich würde eher alle Dateien suchen und für EXE-Dateien eine entsprechende Sonderbehandlung ansetzen</p>
</blockquote>
<p>diese Idee hate ich auch bereits, aber ich finde es muss doch möglich sein eine verschachtung der funktionen zu machen....</p>
<p>hmmmm, ich wiess es auch nicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/899773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899773</guid><dc:creator><![CDATA[keineIdee]]></dc:creator><pubDate>Mon, 24 Oct 2005 07:29:55 GMT</pubDate></item><item><title><![CDATA[Reply to findfirstfile dateiendung in unterverzeihnissen on Mon, 24 Oct 2005 07:31:48 GMT]]></title><description><![CDATA[<p>keineIdee schrieb:</p>
<blockquote>
<p>diese Idee hate ich auch bereits, aber ich finde es muss doch möglich sein eine verschachtung der funktionen zu machen....</p>
</blockquote>
<p>Sicher. Mach einfach zwei Suchschleifen hintereinander. Eine mit &quot;<em>.</em>&quot; für die Verzeichnisse und die Rekursion, eine mit &quot;*.exe&quot; für die Dateien.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/899776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899776</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 24 Oct 2005 07:31:48 GMT</pubDate></item><item><title><![CDATA[Reply to findfirstfile dateiendung in unterverzeihnissen on Mon, 24 Oct 2005 07:33:25 GMT]]></title><description><![CDATA[<p>Alternativ kannst du auch die Schleifen nacheinander ablaufen lassen - erst mit &quot;<em>.</em>&quot; nach Unterverzeichnissen suchen, dahinter mit &quot;*.exe&quot; nach Programmdateien. (oder umgekehrt)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/899778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899778</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 24 Oct 2005 07:33:25 GMT</pubDate></item><item><title><![CDATA[Reply to findfirstfile dateiendung in unterverzeihnissen on Mon, 24 Oct 2005 08:10:45 GMT]]></title><description><![CDATA[<p>ich habe noch eine frage:</p>
<p>wie finde ich die dateierweiterung von einer datei heraus (die sind unterschidlich lang)? gibt es eine funktion dafür?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/899804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899804</guid><dc:creator><![CDATA[keineIdee]]></dc:creator><pubDate>Mon, 24 Oct 2005 08:10:45 GMT</pubDate></item><item><title><![CDATA[Reply to findfirstfile dateiendung in unterverzeihnissen on Mon, 24 Oct 2005 08:17:25 GMT]]></title><description><![CDATA[<p>PathFindExtension</p>
]]></description><link>https://www.c-plusplus.net/forum/post/899810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899810</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 24 Oct 2005 08:17:25 GMT</pubDate></item><item><title><![CDATA[Reply to findfirstfile dateiendung in unterverzeihnissen on Mon, 24 Oct 2005 08:35:43 GMT]]></title><description><![CDATA[<p>CStoll, das sieht gefährlich aus: strcmp(name+strlen(name)-4,&quot;.exe&quot;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/899817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899817</guid><dc:creator><![CDATA[warning]]></dc:creator><pubDate>Mon, 24 Oct 2005 08:35:43 GMT</pubDate></item><item><title><![CDATA[Reply to findfirstfile dateiendung in unterverzeihnissen on Mon, 24 Oct 2005 08:44:36 GMT]]></title><description><![CDATA[<p>@warning: dann eben &quot;strcmp(strrchr(name,'.'),&quot;.exe&quot;)&quot;, falls dir damit wohler ist.</p>
<p>@keineIdee: das einfachste ist wohl <a href="http://man.cx/strrchr" rel="nofollow">man: strrchr</a>(name,'.') - findet das letzte &quot;.xyz&quot; in deinem Dateinamen (=Endung).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/899824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899824</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 24 Oct 2005 08:44:36 GMT</pubDate></item><item><title><![CDATA[Reply to findfirstfile dateiendung in unterverzeihnissen on Mon, 24 Oct 2005 10:36:53 GMT]]></title><description><![CDATA[<p>Am besten man macht 2 Suchfunktionen, eine für Ordner und die Andere für die Dateien.<br />
Das Ganze kann so aussehen:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;stdio.h&gt;

void fFindFolder (char *, char *) ;
void fFindFile (char *, char *) ;

//hier der Aufruf aus der WinMain
fFindFolder (&quot;c:\\&quot;, &quot;*.exe&quot;) ;

//Funktion die Ordner sucht
void fFindFolder (char *szStartPath, char *szErweiterung){
	WIN32_FIND_DATA	data ;
	HANDLE			handle ;
	char			szBuffer[MAX_PATH],
					szPath[MAX_PATH],
					szEndung[MAX_PATH] ;
	strcpy (szPath, szStartPath) ;
	strcpy (szEndung, szErweiterung) ;
	sprintf(szBuffer, &quot;%s\\%s&quot;, szStartPath, &quot;*.*&quot;) ;
	handle = FindFirstFile (szBuffer, &amp;data) ;
	if (handle != INVALID_HANDLE_VALUE){
                //und hier der Trick, die Funktion die die Dateien sucht wird hier aufgerufen
		fFindFile (szPath, szEndung) ;
		do{
			if (!((data.cFileName[0] == '.') &amp;&amp; ((data.cFileName[1] == '.' &amp;&amp; data.cFileName[2] == 0) || data.cFileName[1] == 0 ))){
				if (data.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY){
					sprintf(szBuffer, &quot;%s\\%s&quot;, szStartPath, data.cFileName) ;
					fFindFolder (szBuffer, szEndung, hParent) ;
				}
			}
		}
		while (FindNextFile (handle, &amp;data)) ;
	}
	FindClose (handle) ;
}

//Funktion die Dateien sucht
void fFindFile (char *szStartPath, char *szErweiterung){
	WIN32_FIND_DATA	data ;
	HANDLE			handle ;
	char			szBuffer[MAX_PATH] ;
	sprintf (szBuffer, &quot;%s\\%s&quot;, szStartPath, szErweiterung) ;
	handle = FindFirstFile (szBuffer, &amp;data) ;
	if (handle != INVALID_HANDLE_VALUE){
		do{
			if (!((data.cFileName[0] == '.') &amp;&amp; ((data.cFileName[1] == '.' &amp;&amp; data.cFileName[2] == 0) || data.cFileName[1] == 0 ))){
				if (!(data.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY)){
					// hier spuckt die Funktion die Dateien aus !!!!
                    // Der Name der Datei ist in data.cFileName gespeichert
				}
			}
		}
		while (FindNextFile (handle, &amp;data)) ;
	}
	FindClose (handle) ;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/899929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899929</guid><dc:creator><![CDATA[toom]]></dc:creator><pubDate>Mon, 24 Oct 2005 10:36:53 GMT</pubDate></item><item><title><![CDATA[Reply to findfirstfile dateiendung in unterverzeihnissen on Mon, 24 Oct 2005 12:18:13 GMT]]></title><description><![CDATA[<p>und um nach mehreren dateierweiterungen auf einmal zu suchen, muss man nur die Funktion fFindFile ändern:</p>
<pre><code class="language-cpp">//im HauptTeil so die funktion Aufrufen:

fFindFolder (&quot;c:\\&quot;, &quot;*.exe *.bat *.txt&quot;) ; //man kann belibig viele Erweiterungen übergeben... naja nicht mehr als in MAX_PATH rein passt

// fFindFolder wie oben

//und hier unsere erweiterte fFindFile Funktion
void fFindFile (char *szStartPath, char *szErweiterungen){
	WIN32_FIND_DATA	data ;
	HANDLE			handle ;
	char			szBuffer[MAX_PATH],
					szEnd[MAX_PATH],
					szEndungen[20][MAX_PATH] ;
	int				x,
					y,
					iAnzahlEndungen ;
	strcpy (szEnd, szErweiterungen) ;
	for (x = 0, y = 0, iAnzahlEndungen = 0 ; x &lt; (int) strlen (szEnd) ; x++){
		if (szEnd[x] == ' '){
			szEndungen[iAnzahlEndungen][y] = '\0' ;
			iAnzahlEndungen++ ;
			y = 0 ;
		}
		else{
			szEndungen[iAnzahlEndungen][y] = szEnd[x] ;
			y++ ;
		}
	}
	szEndungen[iAnzahlEndungen][y] = '\0' ;
	for (x = 0 ; x &lt;= iAnzahlEndungen ; x++){
		sprintf (szBuffer, &quot;%s\\%s&quot;, szStartPath, szEndungen[x]) ;
		handle = FindFirstFile (szBuffer, &amp;data) ;
		if (handle != INVALID_HANDLE_VALUE){
			do{
				if (!((data.cFileName[0] == '.') &amp;&amp; ((data.cFileName[1] == '.' &amp;&amp; data.cFileName[2] == 0) || data.cFileName[1]==0 ))){
					if (!(data.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY)){
				// hier spuckt die Funktion die Dateien aus !!!!
                    // Der Name der Datei ist in data.cFileName gespeichert
							}
				}
			}
			while (FindNextFile (handle, &amp;data)) ;
		}
		FindClose (handle) ;
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/900003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900003</guid><dc:creator><![CDATA[toom]]></dc:creator><pubDate>Mon, 24 Oct 2005 12:18:13 GMT</pubDate></item><item><title><![CDATA[Reply to findfirstfile dateiendung in unterverzeihnissen on Mon, 24 Oct 2005 12:28:20 GMT]]></title><description><![CDATA[<p>Die Erweiterung bekommst du recht einfach mit:</p>
<pre><code class="language-cpp">TCHAR szExt[_MAX_EXT];
	_splitpath(
		DATEINAME, 
		NULL, 
		NULL, 
		NULL, 
		szExt);

	string erweiterung = (string)szExt;
</code></pre>
<p>heraus..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900014</guid><dc:creator><![CDATA[DanielG]]></dc:creator><pubDate>Mon, 24 Oct 2005 12:28:20 GMT</pubDate></item></channel></rss>