<?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[MoveFile funktioniert nicht nach Vorstellung[Gelöst]]]></title><description><![CDATA[<p>Hallo,</p>
<p>also Folgendes Problem ich möchte mit der Winapi funktion MoveFile mehrer DAtein umbennen. Meine Idee, ich wollte immer den aktuellen Namen der Datei als ExistingFile nehmen. Als NewFilenname wollte ich einen festen anfangsstring namen nehmen nur das nach jedem durchlauf die &quot;Endung&quot; des strings verändert wird, hier ein beispiel.</p>
<p>existingfile = &quot;hallo.txt&quot;<br />
newfilename = &quot;hallo1.txt&quot;</p>
<p>existingfile = &quot;bernd.txt&quot;<br />
newfilename = &quot;hallo2.txt&quot;</p>
<p>existingfile = &quot;test.txt&quot;<br />
newfilename = &quot;hallo3.txt&quot;</p>
<p>um das nummeriereren irgendwann zu realisieren, lasse ich einfach immer dann wenn ein file gefunden wurde einen zähler hochzählen. nur leider funktioniert das nicht so, da MoveFile ein const string erwartet, somit sehe ich für mich das problem, das ich das mit movefile nicht durchführen kann, denn meine files sind ja nicht const. hier mein code</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;windows.h&gt;

int main()
{
  std::cout&lt;&lt;&quot;Es wird umbenannt&quot;&lt;&lt;std::endl;

  int zae = 0;

      HANDLE fHandle;

      WIN32_FIND_DATA wfd;

      fHandle=FindFirstFile(&quot;C:\\Test\\*&quot;,&amp;wfd);

    do

      {

          // Eintrag nur behandeln, wenn es nicht . oder .. ist (werden nur bei Unterverzeichnissen mit zurückgeliefert)

          // hier könnte man z.B. auch mit lstrcmp auf . und .. vergleichen, was allerdings nicht ganz so effizient ist

          if (!( (wfd.cFileName[0]=='.') &amp;&amp; ( (wfd.cFileName[1]=='.' &amp;&amp; wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) ))

          {

              if (wfd.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY)

              {

                  //std::cout&lt;&lt;&quot;Folgende Verzeichniss wurden gefunden: &quot;&lt;&lt;wfd.cFileName&lt;&lt;std::endl;

             // Datei ist keine, sondern ein Verzeichnis...

                  // Hier könnte man dasselbe nochmal machen, um auch die

                  // Unterverzeichnisse zu scannen ;-)

              }

              else

              {

                  std::cout&lt;&lt;&quot;Folgende Datein wurden gefunden: &quot;&lt;&lt;wfd.cFileName&lt;&lt;std::endl;
                  zae++;
                  const std::string ziel = &quot;C:\\Test\\&quot;+wfd.cFileName;

                  MoveFile(ziel,&quot;hallo.txt&quot;);

              }

          }

      }

      while (FindNextFile(fHandle,&amp;wfd));

      std::cout&lt;&lt;&quot;Anzahl Datein: &quot;&lt;&lt;zae&lt;&lt;std::endl;

      FindClose(fHandle);

    return 0;
}
</code></pre>
<p>so wie ich es jetzt probiert habe geht es natürlich nicht, daher bitte ich euch um Rat</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/207204/movefile-funktioniert-nicht-nach-vorstellung-gelöst</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 20:51:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207204.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 04 Mar 2008 20:12:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to MoveFile funktioniert nicht nach Vorstellung[Gelöst] on Wed, 05 Mar 2008 17:07:12 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>also Folgendes Problem ich möchte mit der Winapi funktion MoveFile mehrer DAtein umbennen. Meine Idee, ich wollte immer den aktuellen Namen der Datei als ExistingFile nehmen. Als NewFilenname wollte ich einen festen anfangsstring namen nehmen nur das nach jedem durchlauf die &quot;Endung&quot; des strings verändert wird, hier ein beispiel.</p>
<p>existingfile = &quot;hallo.txt&quot;<br />
newfilename = &quot;hallo1.txt&quot;</p>
<p>existingfile = &quot;bernd.txt&quot;<br />
newfilename = &quot;hallo2.txt&quot;</p>
<p>existingfile = &quot;test.txt&quot;<br />
newfilename = &quot;hallo3.txt&quot;</p>
<p>um das nummeriereren irgendwann zu realisieren, lasse ich einfach immer dann wenn ein file gefunden wurde einen zähler hochzählen. nur leider funktioniert das nicht so, da MoveFile ein const string erwartet, somit sehe ich für mich das problem, das ich das mit movefile nicht durchführen kann, denn meine files sind ja nicht const. hier mein code</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;windows.h&gt;

int main()
{
  std::cout&lt;&lt;&quot;Es wird umbenannt&quot;&lt;&lt;std::endl;

  int zae = 0;

      HANDLE fHandle;

      WIN32_FIND_DATA wfd;

      fHandle=FindFirstFile(&quot;C:\\Test\\*&quot;,&amp;wfd);

    do

      {

          // Eintrag nur behandeln, wenn es nicht . oder .. ist (werden nur bei Unterverzeichnissen mit zurückgeliefert)

          // hier könnte man z.B. auch mit lstrcmp auf . und .. vergleichen, was allerdings nicht ganz so effizient ist

          if (!( (wfd.cFileName[0]=='.') &amp;&amp; ( (wfd.cFileName[1]=='.' &amp;&amp; wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) ))

          {

              if (wfd.dwFileAttributes &amp; FILE_ATTRIBUTE_DIRECTORY)

              {

                  //std::cout&lt;&lt;&quot;Folgende Verzeichniss wurden gefunden: &quot;&lt;&lt;wfd.cFileName&lt;&lt;std::endl;

             // Datei ist keine, sondern ein Verzeichnis...

                  // Hier könnte man dasselbe nochmal machen, um auch die

                  // Unterverzeichnisse zu scannen ;-)

              }

              else

              {

                  std::cout&lt;&lt;&quot;Folgende Datein wurden gefunden: &quot;&lt;&lt;wfd.cFileName&lt;&lt;std::endl;
                  zae++;
                  const std::string ziel = &quot;C:\\Test\\&quot;+wfd.cFileName;

                  MoveFile(ziel,&quot;hallo.txt&quot;);

              }

          }

      }

      while (FindNextFile(fHandle,&amp;wfd));

      std::cout&lt;&lt;&quot;Anzahl Datein: &quot;&lt;&lt;zae&lt;&lt;std::endl;

      FindClose(fHandle);

    return 0;
}
</code></pre>
<p>so wie ich es jetzt probiert habe geht es natürlich nicht, daher bitte ich euch um Rat</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468365</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 05 Mar 2008 17:07:12 GMT</pubDate></item><item><title><![CDATA[Reply to MoveFile funktioniert nicht nach Vorstellung[Gelöst] on Tue, 04 Mar 2008 20:28:10 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Versuchs doch mal so</p>
<pre><code class="language-cpp">std::cout&lt;&lt;&quot;Folgende Datein wurden gefunden: &quot;&lt;&lt;wfd.cFileName&lt;&lt;std::endl;
zae++;
const std::string quelle(&quot;C:\\Test\\&quot;);
quelle += wfd.cFileName;
std::stringstream str;
str &lt;&lt; &quot;Hallo&quot; &lt;&lt; zae &lt;&lt; &quot;.txt&quot;;
std::rename(quell.c_str(), str.str().c_str());
</code></pre>
<p>Ich habe mal statt MoveFile std::rename genommen. Das macht ja prinzipiell das Gleiche.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468375</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 04 Mar 2008 20:28:10 GMT</pubDate></item><item><title><![CDATA[Reply to MoveFile funktioniert nicht nach Vorstellung[Gelöst] on Tue, 04 Mar 2008 20:40:26 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-10455.html" rel="nofollow">evilissimo</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468380</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Tue, 04 Mar 2008 20:40:26 GMT</pubDate></item><item><title><![CDATA[Reply to MoveFile funktioniert nicht nach Vorstellung[Gelöst] on Tue, 04 Mar 2008 20:51:59 GMT]]></title><description><![CDATA[<p>Ich halte die Verschiebung für falsch. Es handelt sich hier eher um ein C++ denn ein WinAPI-Problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468388</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 04 Mar 2008 20:51:59 GMT</pubDate></item><item><title><![CDATA[Reply to MoveFile funktioniert nicht nach Vorstellung[Gelöst] on Tue, 04 Mar 2008 23:14:05 GMT]]></title><description><![CDATA[<p>Dieses &quot;Gewurschtel&quot; funktioniert irgendwie... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;

////////////////////////////////////
#define FILTER &quot;C:\\test\\*.txt&quot;
////////////////////////////////////

std::string convert(wchar_t *toconvert){
	char cstr[512];
	for(short cnt=0;*(toconvert+cnt)!='\0';cnt++){
		cstr[cnt]=static_cast&lt;char&gt;(*(toconvert+cnt));
		cstr[cnt+1]='\0';
	}
	return cstr;
}

std::string getdirectorypath(wchar_t *toconvert){
	std::string buf=convert(toconvert);
	return buf.erase(buf.length()-5,buf.length());
}

int main(void){
	wchar_t filestochange[]=TEXT(FILTER);
	std::string directorypath=getdirectorypath(filestochange);
	WIN32_FIND_DATA wfd;
	HANDLE hnd=FindFirstFile(filestochange,&amp;wfd);
	std::cout&lt;&lt;&quot;Folgende Dateien wurden umbenannt:&quot;&lt;&lt;std::endl;
	if(hnd){
		short cnt=0;
		std::string files[1025];
		do{
			files[cnt]=convert(wfd.cFileName);
			std::cout&lt;&lt;std::endl&lt;&lt;files[cnt];
			cnt++;
		}while(FindNextFile(hnd,&amp;wfd));
		do{
			cnt--;
			std::string filelabel=&quot;A&quot;; filelabel[0]='A'+cnt;
			std::rename((directorypath+files[cnt]).c_str(),(directorypath+filelabel+&quot;.txt&quot;).c_str());
		}while(cnt&gt;0);
	}
	FindClose(hnd);
	Sleep(2000);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1468455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468455</guid><dc:creator><![CDATA[OLIVANDER]]></dc:creator><pubDate>Tue, 04 Mar 2008 23:14:05 GMT</pubDate></item><item><title><![CDATA[Reply to MoveFile funktioniert nicht nach Vorstellung[Gelöst] on Wed, 05 Mar 2008 05:20:44 GMT]]></title><description><![CDATA[<p>heyho,</p>
<p>danke braunstein, die lösung kommt dem schon nahe was ich machen möchte, nur leider musste ich feststellen das mit</p>
<pre><code class="language-cpp">const srd::string
</code></pre>
<p>nicht wirklich geklappt hat, hier mein code ausschnitt.</p>
<pre><code class="language-cpp">std::cout&lt;&lt;&quot;Folgende Datein wurden gefunden: &quot;&lt;&lt;wfd.cFileName&lt;&lt;std::endl;
                  zae++;
                  std::string quelle(&quot;C\\Test\\&quot;);
                  quelle +=wfd.cFileName;
                  std::stringstream str;

                  str&lt;&lt;&quot;Test&quot;&lt;&lt;zae&lt;&lt;&quot;.txt&quot;;
                  std::cout&lt;&lt;str.str().c_str()&lt;&lt;std::endl;

                  MoveFile(quelle.c_str(),str.str().c_str());
</code></pre>
<p>komisch is nur das er nicht umbenennt. ich dachte es liegt daran das ich meine exe nicht in dem verzeichnis habe welches ich als quelle angegeben habe, aber daran lag es auch nicht, was könnte also jetzt der fehler sein, das er die datein nicht umbenennt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468486</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 05 Mar 2008 05:20:44 GMT</pubDate></item><item><title><![CDATA[Reply to MoveFile funktioniert nicht nach Vorstellung[Gelöst] on Wed, 05 Mar 2008 06:41:18 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>was könnte also jetzt der fehler sein, das er die datein nicht umbenennt?</p>
</blockquote>
<p>Man könnte auch mal die grundlegendsten Fehlerdiagnosemechanismen anwenden:</p>
<p>- Rückgabewert prüfen<br />
- GetLastError aufrufen</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468495</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 05 Mar 2008 06:41:18 GMT</pubDate></item><item><title><![CDATA[Reply to MoveFile funktioniert nicht nach Vorstellung[Gelöst] on Wed, 05 Mar 2008 06:51:28 GMT]]></title><description><![CDATA[<p>ok da hast du recht, aber wenn ich mir den rückgabewert ausgeben lasse und ich bekomme 0 wieder, dann bin ich genauso schlau wie vorher, denn das die umbenennung nicht geklappt hat</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468498</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 05 Mar 2008 06:51:28 GMT</pubDate></item><item><title><![CDATA[Reply to MoveFile funktioniert nicht nach Vorstellung[Gelöst] on Wed, 05 Mar 2008 06:52:30 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>aber wenn ich mir den rückgabewert ausgeben lasse und ich bekomme 0 wieder, dann bin ich genauso schlau wie vorher, denn das die umbenennung nicht geklappt hat</p>
</blockquote>
<p>Das war ja auch nur die Hälfte der Fehlerdiagnose-Basics.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468499</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 05 Mar 2008 06:52:30 GMT</pubDate></item><item><title><![CDATA[Reply to MoveFile funktioniert nicht nach Vorstellung[Gelöst] on Wed, 05 Mar 2008 10:16:25 GMT]]></title><description><![CDATA[<p>Das hier</p>
<pre><code class="language-cpp">std::string quelle(&quot;C\\Test\\&quot;);
</code></pre>
<p>kann ja auch nicht funktionieren. Woher weißt du überhaupt, dass sich die Datei in diesem Pfad befindet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468601</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 05 Mar 2008 10:16:25 GMT</pubDate></item><item><title><![CDATA[Reply to MoveFile funktioniert nicht nach Vorstellung[Gelöst] on Wed, 05 Mar 2008 11:25:20 GMT]]></title><description><![CDATA[<p>ich weiß das daher, weil ich ein verzeichnis angelegt habe mit dem namen Test und dort eine vielzahl von willkürlich benannten textdateien liegt <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>und wie ich gerade mitbekommen habe, fehlt dort auch ein : nach dem C...ohhh wie unaufmerksam</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468667</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 05 Mar 2008 11:25:20 GMT</pubDate></item><item><title><![CDATA[Reply to MoveFile funktioniert nicht nach Vorstellung[Gelöst] on Wed, 05 Mar 2008 17:06:54 GMT]]></title><description><![CDATA[<p>GELÖST</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468916</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 05 Mar 2008 17:06:54 GMT</pubDate></item></channel></rss>