So führen Sie Dateifunktionen für mehrere Dateien aus. Sieht so aus, als ob ich keine Platzhalter verwenden kann?Wie führe ich Dateifunktionen mithilfe von Platzhaltern für mehrere Dateien aus? Nehmen wir an, nachdem ich mit den Dateien fertig bin, möchte ich sie wie folgt in entsprechende Ordner sortieren:
Move Files("c:/temp/*.jmp", "c:/temp/processed_jmp/");
Move Files("c:/temp/*.csv", "c:/temp/processed_csv/");Es sieht so aus, als würde das mit Wildecards nicht funktionieren. Ich würde es hassen, eine Liste aller Dateien abzurufen, sie für jede Erweiterung in separate Listen aufzuteilen und dann FOR-Schleifen zu erstellen, um jede Datei zu durchlaufen ... Gibt es eine elegantere Möglichkeit, das zu tun?
Betreff: So führen Sie Dateifunktionen für mehrere Dateien aus. Sieht so aus, als ob ich keine Platzhalter verwenden kann?Ja, eleganter würde ich das nicht nennen. Ich habe diese Lösung gesehen, ja, aber ich bleibe lieber bei meiner aktuellen Lösung.
Vielen Dank!Betreff: So führen Sie Dateifunktionen für mehrere Dateien aus. Sieht so aus, als ob ich keine Platzhalter verwenden kann?Sie könnten RunProgram verwenden, etwa so (viel Setup für ein vollständiges Beispiel)
Delete Directory( "$temp/aaa" ); // make sure source is empty
Create Directory( "$temp/aaa" );
Save Text File( "$temp/aaa/a1.txt", "a" );
Save Text File( "$temp/aaa/a2.txt", "aa" );
Save Text File( "$temp/aaa/a3.bad", "no suffix" );
Delete Directory( "$temp/bbb" ); // make sure dest is empty
Create Directory( "$temp/bbb" );
aaa = Convert File Path( "$temp/aaa", "windows" ); // "C:\Users\v1\AppData\Local\Temp\aaa"
bbb = Convert File Path( "$temp/bbb", "windows" ); // "C:\Users\v1\AppData\Local\Temp\bbb"
aaawild = aaa || "\a*.txt"; // wild card *
result = Run Program( Executable( "CMD.EXE" ),
Options( {"/a", "/q", "/c move ", aaawild, bbb} ), ReadFunction( "text" ) );
Write( result );
Show( Files In Directory( aaa ) );
Show( Files In Directory( bbb ) );
C:\Benutzer\v1\AppData\Local\Temp\aaa\a1.txt
C:\Benutzer\v1\AppData\Local\Temp\aaa\a2.txt
2 Datei(en) verschoben.
Dateien im Verzeichnis(aaa) = {"a3.bad"};
Dateien im Verzeichnis(bbb) = {"a1.txt", "a2.txt"};
/a und /q sind Optionen für CMD.EXE und /c übergibt den Verschiebungsbefehl an CMD.EXE.
Betreff: So führen Sie Dateifunktionen für mehrere Dateien aus. Sieht so aus, als ob ich keine Platzhalter verwenden kann?Im Moment habe ich es so implementiert:
path = "c:/temp/";
pathProcessed = path||"processed/";
listOfFiles = Files In Directory(path);
for(i=1, i<=N Items(listOfFiles), i++,
if(Contains(listOfFiles[i], ".jmp")>0, Move File(path||listOfFiles[i], pathProcessed||listOfFiles[i]));
);
aber es sieht komisch aus...