Programmiersprache – die besten Beiträge

Mögliche fehler?

moin, ich habe einen code für cmd geschrieben, der mir den archivierungsprozess erleichtern soll, er funktioniert und alles schön und gut, bloß dass - warum auch immer - im archivlaufwerk, leere ordner stehen und auf dem ursprungsdatenträger nach dem Löschen und umbenennen natürlich auch - da soll es aber auch so sein. nächstes problem: ich habe jetzt testordner erstellt um der sache auf den grund zu gehen und stelle fest dass nicht alle ordner leer sind, nur ein paar, aus meiner sicht zufällig ausgewählte.

set "quelle=I:\Ordner 1\Ordner 2\TestOrdner" & set "ziel=V:\Ordner 1\Ordner 2" & set "liste=C:\Users\*meinUser*\Documents\OrdnerListe.txt"

for /f "usebackq delims=" %N in ("%liste%") do (

  echo Verarbeite Ordner: %N  

  robocopy "%quelle%\%N" "%ziel%\%N" /E /COPY:DATSO /R:3 /W:10 /MT:8 /LOG+:kopierlog.txt

)

das ist der code schnipsel für das kopieren, bevor eine frage dazu kommt: nein, die verzeich isse sind nicht fehlerhaft, die sollen genau so sein wie sie dort sind.

das funktioniert einwandfrei und wenn man nach dem kopieren nachschaut sind auch alle verzeichnisse, unterverzeichnisse und dateien vorhanden.

set "quelle=I:\Ordner 1\Ordner 2\TestOrdner"

set "liste=C:\Users\*meinUser*\Documents\OrdnerListe.txt"

for /f "usebackq delims=" %N in ("%liste%") do (

  del /f /s /q "%quelle%\%N\*"

  for /d %U in ("%quelle%\%N\*") do rmdir /s /q "%U" 

  ren "%quelle%\%N" "%N - Archiv"

)

das is der code schnipsel für das automatische löschen der Inhalte der Unterordner (hier im beispiel der ersten Unterordner von "TestOrdner") und das dann anschließende umbenennen jener mit einer ergänzung "- Archiv"

die ordner die kopiert bzw gelöscht und umbenannt werden sollen stehen in dieser OrdnerListe.txt datei

kann mir bitte jemand sagen was ich da falsch gecoded haben könnte oder was cmd vllt falsch interpretiert? und dazu dann bitte gleich einen entsprechenden verbesserungs vorschlag?

achso, der code ist in 2 schnipseln damit der code weniger anfällig ist für fehler (ironischerweise), natürlich würde man ihn auch als einen einzigen ausführen können, wenn man es wollen würde

Batch, cmd, Code, Programmiersprache

verständinsproblem addressausgabe dynamische Liste?

Hallo,

ich habe eine Liste in C erstellt, dies scheint wohl zu funktionieren, allerdings habe ich ein Problem mit der Ausgabe der Adresse der einzelnen Elemente in der Liste

Zunächst rufe ich für alle Files die Funktion "appenFileName_v" auf.
zum schluss rufe ich dann noch einmal die Funktion: "printList_v" auf um zu überprüfen ob alle elemente vorhanden sind

struct fileList_ts
{
  char* name;
  struct fileList_ts* next;
};
static struct fileList_ts* fileList_ps = NULL;
static void appendFileName_v(char* value)
{
  struct fileList_ts *newElement_ps;
  if (fileList_ps == NULL) // check if there is already an element in the list
  {
    if((fileList_ps = malloc(sizeof(struct fileList_ts))) == NULL)
    {
      ESP_LOGE(TAG, "no free memory for starting list");
    }
    else
    {
      ESP_LOGI(TAG, "address fileList_ps: %p", &fileList_ps);
      fileList_ps->name = (char *)malloc(strlen(value) + 1);
      strcpy(fileList_ps->name, value);
      fileList_ps->next = NULL;
    }
  }
  else
  {
    newElement_ps = fileList_ps; // point to first element
    while(newElement_ps->next != NULL) // go to last element
    {
      newElement_ps = newElement_ps->next;
    }
    if((newElement_ps->next = malloc(sizeof(struct fileList_ts))) == NULL) // reserve memory for the new element
    {
      ESP_LOGE(TAG, "no free memory for the new element");
    }
    else
    {
      newElement_ps = newElement_ps->next; // point to new memory
      newElement_ps->name = (char *)malloc(strlen(value) + 1);
      ESP_LOGI(TAG, "address newElement: %p", &newElement_ps);
      strcpy(newElement_ps->name, value);
      newElement_ps->next = NULL;
    }
  }
}

static void printList_v(void)
{
    struct fileList_ts *pointer = fileList_ps;
    while(pointer != NULL) {
        ESP_LOGI(TAG, "printList: %p %s", &pointer, pointer->name);
        pointer = pointer->next;
   }
}


Die Ausgabe ist dann wie folg:

I (634) SD_CARD: address fileList_ps: 0x3ffb2fbc  SYSTEM~1
I (634) SD_CARD: address newElement: 0x3ffb8f10  HELLO.TXT
I (634) SD_CARD: address newElement: 0x3ffb8f10  FOO.TXT
I (634) SD_CARD: address newElement: 0x3ffb8f10  DREIECK.BMP
I (644) SD_CARD: address newElement: 0x3ffb8f10  DREIECK.PNG
I (644) SD_CARD: address newElement: 0x3ffb8f10  KREUZ.BMP
I (664) SD_CARD: address newElement: 0x3ffb8f10  TEST.BMP
I (664) SD_CARD: address newElement: 0x3ffb8f10  TEST2.BMP
I (664) SD_CARD: printList: 0x3ffb8f10 SYSTEM~1
I (664) SD_CARD: printList: 0x3ffb8f10 HELLO.TXT
I (674) SD_CARD: printList: 0x3ffb8f10 FOO.TXT
I (674) SD_CARD: printList: 0x3ffb8f10 DREIECK.BMP
I (674) SD_CARD: printList: 0x3ffb8f10 DREIECK.PNG
I (694) SD_CARD: printList: 0x3ffb8f10 KREUZ.BMP
I (694) SD_CARD: printList: 0x3ffb8f10 TEST.BMP
I (694) SD_CARD: printList: 0x3ffb8f10 TEST2.BMP

Die Namen sind also alle in der Liste drinn. Nur wundert es mich, dass die Adresse überall die selbe ist.

Code, Programmiersprache, Liste, C (Programmiersprache)

Codierung falsch, aber alle?

moin, ich habe einen code geschrieben, der für mich ordner und deren inhalte kopieren soll, von einen Datenträger auf den anderen, quasi ein archivierungshelfer. den code schreibe ich gleich unten hin aber mir ergibt sich da folgendes problem: ich will nicht alle ordner eines verzeichnisses archivieren, sondern nur ausgewählte, dafür habe ich eine liste, in der all jene stehen, die kopiert werden sollen, mein problem dabei ist aber, dass die codierung nicht erkannt wird, egal welche! ich habe die liste in einem .txt dokument gespeichert ---- an der stelle will ich anmerken dass der code wohleher ein befehl für cmd ist --- und sämtliche mögliche codierungen ausprobiert, alle namen die kein ß,ä,ö oder ü haben, werden gelesen, erkannt und dann kopiert, so wie es sein soll, aber durch die codierung sucht er z.b. statt nach einem ü nach einer hochgestellten 3 ???? (ANSI) ich weiß nicht mehr weiter, ich weiß nur zu 100% dass es an der codierung liegt, denn wenn ich mir die liste von cmd ausgeben lasse passiert das oben geschriebene, alles wird normal geschrieben, außer ä ö ü und ß.

was kann ich tun???

hier mein code:

set "quelle=I:\Ordner 1\ZZZTester" & set "ziel=V:\Ordner 1\TestOrdner" & set "liste=C:\Users\*mein User*\Documents\OrdnerListeTESTER.txt"

for /f "usebackq delims=" %N in ("%liste%") do (

  echo Verarbeite Ordner: %N  

  robocopy "%quelle%\%N" "%ziel%\%N" /E /COPY:DATSO /R:3 /W:10 /MT:8 /LOG+:kopierlog.txt

)

cmd, Code, Programmiersprache

Meistgelesene Beiträge zum Thema Programmiersprache