Ich bin ein Anfänger bei Batch-Programmierung, also entschuldige mich für die einfache Frage.Batch: Wie führe ich ein Programm für alle Dateien in einem Ordner aus und wie erstelle ich eine Ausgabedatei für das Ergebnis unter Verwendung des ursprünglichen Dateinamens?
Ich habe einen Ordner FSC in C genannt: \ TTG \ FSC, mit tausend und tausend von Textdateien wie 1_A.txt2_A.txt usw. Ich möchte ein Programm ausführen und haben ihre Ausgabe in einer anderen Datei, die die ursprüngliche Datei umbenennt (z. B. 1_A.txt wird eine Ausgabedatei namens 1_A_out.txt haben). Ich habe bereits getestet, um das Programm auf 1 Datei auszuführen und es funktioniert (einfach auf die Befehlszeile schreiben Tag-Französisch Dateiname).
Also, wie kann ich die for-Schleife für die Analyse jeder Datei auf dem Ordner erstellen und die Ausgabedateien erstellen?
Ich habe dies versucht, aber es nicht
for /F %%i in ('dir /b "c:\treetagger\FSCB1\"') do
tag-french %%i > %%i_out
ich es in ubuntu tun funktioniert kann dies zu schreiben:
for l in /home/sp/Desktop/FSCM5/*
do
echo $l
filename=$(basename "$l")
extension="${filename##*.}"
filename="${filename%.*}"
filename=($(echo "/home/sp/Desktop/FSCM5TTG/"$filename"_"ttg"_."$extension))
echo $filename
sh /home/sp/Desktop/TTG/cmd/tree-tagger-french $l > $filename
done
Aber ich möchte lernen, wie man dies in Windows zu tun auch
Das ist, wofür die 'FOR/F'-Schleife ist - listet alle (übereinstimmenden) Dateien in einem Ordner möglicherweise rekursiv auf und führt einen Befehl für sie aus. Geben Sie 'FOR /?' Ein, um die Befehlssyntax zu erhalten. – user1016274
Ich habe versucht, dies zu tun, aber es funktioniert nicht: für/F %% i in ('dir/b "c: \ treetagger \ FSCB1 \"') tun tag-french %% i>% % i_out – Jurafsky
Was passiert, wenn bereits Dateien mit dem Namen '* _out.txt' im Verzeichnis vorhanden sind? – aschipfl