817 Stimmen

Wie man über Dateien in einem Verzeichnis iteriert und den Pfad ändert und einem Dateinamen ein Suffix hinzufügt

Ich muss ein Skript schreiben, das mein Programm mit unterschiedlichen Argumenten startet. Ich starte mein Programm mit:

./MyProgram.exe Data/data1.txt [Logs/data1_Log.txt].

Hier ist der Pseudocode für das, was ich tun möchte:

für jeden Dateinamen in /Data tun
  für int i = 0, i = 3, i++
    ./MyProgram.exe Data/filename.txt Logs/filename_Log{i}.txt
  end für
end für

Wie kann ich das zweite Argument aus dem ersten erstellen, sodass es wie dataABCD_Log1.txt aussieht und mein Programm startet?

-5voto

user3183111 Punkte 192

Es sieht so aus, als ob du versuchst, eine Windows-Datei (.exe) auszuführen. Du solltest stattdessen PowerShell verwenden. Wie auch immer, auf einer Linux-Bash-Shell reicht ein einfacher Einzeiler aus.

[/home/$] for filename in /Data/*.txt; do for i in {0..3}; do ./MyProgam.exe  Data/filenameLogs/$filename_log$i.txt; done done

Oder in einem Bash-Skript:

#!/bin/bash

for filename in /Data/*.txt;
   do
     for i in {0..3};
       do ./MyProgam.exe Data/filename.txt Logs/$filename_log$i.txt;
     done
 done

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X