Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

C - In alle Ordner eines Verzeichnis wechseln und Dateien umbennen

Hi,

ich versuche in C ein Programm zu schreiben, dass in Verzeichnis C:\xyz\ alle Unterordner durchgeht und dort jeweils alle *.html files löscht und alle *.cer files in *.crt Umbenennt. Hört sich einfach an, wars dann aber doch nicht, zumindest wenn sowas noch nie gemacht hat.
Ich will nicht alle Unterordnernamen hart in den Quelltext coden, dann kann ich das auch per Hand machen. Ich suche also einen Befehl der in Ordner1 reingeht ohne den genauen Ordnernamen vom User angegeben zu bekommen. Außerdem weiß ich noch nicht genau, wie ich alle *.cer Dateien in *.crt umbenannt bekomme ohne die Dateinamen angeben zu müssen.
Also z.B. ist im Ordner C:\xyz\Ordner1 die Dateien a.cer, b.cer und c.cer die jeweils in a.crt, b.crt usw. umbenannt werden sollen. Das gleiche soll auch in C:\xyz\Ordner2 geschehen, da heißen die .cer Dateien aber wieder anders. Der Dateiname muss beibehalten werden, nur die Endung darf verändert werden. Hier ist mein "Pseudocode":

#include <stdio.h>
#include <unistd.h> // chdir()

main(){
    chdir("C:\xyz\");
    while(noch nicht durchsuchte Ordner vorhanden){
        cd Ordnerx; //geht in den ersten Unterordner
        system("del *.html");
        mv *.cer *.crt
        x+1;   //sorgt dafür, dass beim nächsten mal der                                                                          nächste Unterordner genommen wird
        cd .. //geht wieder in xyz
    }
}

Alternativ würde mir auch der Quellcode für ein Powershell Script, dass die Aufgabe erfüllt helfen.

Gruß

darki94


Antworten zu C - In alle Ordner eines Verzeichnis wechseln und Dateien umbennen:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

 

Zitat
Alternativ würde mir auch der Quellcode für ein Powershell Script, dass die Aufgabe erfüllt helfen.
Ja. Nee. Is klar. Träume weiter.

 
Zitat
ich versuche in C ein Programm zu schreiben, dass in Verzeichnis C:\xyz\ alle Unterordner durchgeht und dort jeweils alle *.html files löscht und alle *.cer files in *.crt Umbenennt. 
Ja. Nun. Nun gut. Versuchst Du. Prima. Und wie weit bist Du mit diesem Versuch?? Wo "klemmt" es?? Aussagekräftige Fehlermeldungen?? Wo "stoppt" das von Dir bisher "geschriebene" Programm?? Was sagt das Debgugging?? Watt nu?? Deine Frage ist??







Hier mal ein erster Versuch :-)

for CERFILE in $(find /tmp/xyz/ -name *.cer) ; do mv $CERFILE $(echo $CERFILE | sed 's/.cer$/.crt/') ; donefor HTMLFILE in $(find /tmp/xyz/ -name *.html) ; do rm $HTMLFILE ; done

Vielleicht bemerkt jemand bei dem Ersetzbefehl einen 'useless use of echo'. Aber leider habe ich keine Möglichkeit gefunden, ohne echo auszukommen.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
1 Leser hat sich bedankt

Habs im übrigen mit einem einfachen PowerShell 2-Zeiler gelöst. Zum Testen:

Get-ChildItem -Filter "*.cer" -Recurse | Rename-Item -NewName {$_.name -replace 'cer','crt' } -whatif
Remove-Item *\*.html -whatif

dann:

Get-ChildItem -Filter "*.cer" -Recurse | Rename-Item -NewName {$_.name -replace 'cer','crt' }
Remove-Item *\*.html

« n-dimensionale Matrix und Werte aufsummierenHilfe bezüglich structs speichern gesucht - !Achtung Anfänger! »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!