Befehlszeilenschleife zum Ausführen des Befehls für alle Dateien in einem Verzeichnis (und, falls möglich, Unterverzeichnisse)


14

Ich gehe davon aus, dass dies ziemlich einfach ist, aber ich habe keine Erfahrung mit Windows-Befehlszeilendienstprogrammen. Grundsätzlich muss ich alle Dateien in einem Verzeichnis durchlaufen (großartig, wenn es Unterverzeichnisse kann, aber ich kann es bei Bedarf in jedem der 5 Verzeichnisse ausführen), den Namen als Variable abrufen und ausführen lassen

"C:\Program Files\ImageMagick-6.7.6-Q16\convert.exe" -compress LZW 
   -colorspace Gray -colors 32 file_var file_var

Ich habe in einer Eingabeaufforderung für loop gesehen, dass Dateien dynamisch benannt werden . Wäre ich in der Lage, das zu verwenden (das SET zu tauschen ... mit dem obigen Befehl)? Der Speicherplatz auf dem betreffenden Computer ist unbeschränkt, daher kann ich zu diesem Zeitpunkt keine Sicherungskopie erstellen, bevor dies ausgeführt wird (ich weiß, dass dies nicht der Fall ist).


Robert, wenn du es geschafft hast, deine eigene Frage zu beantworten, füge bitte deine eigene Antwort hinzu und akzeptiere sie als die richtige.
Julian Knight

Ich glaube nicht, dass "%%f" "%%f"das genau das ist, was Sie wollen. Am Ende von it ( ) wird nur der Dateiname (mit vollständig qualifiziertem Pfad) zweimal platziert. Sie möchten wahrscheinlich etwas verwenden "%%f" "%%~dpnf.gif", um die Erweiterung der Ausgabedatei zu ändern.
Synetech

@JulianKnight - danke, ich habe tatsächlich versucht, zurück zu kommen, aber ich denke, es gab ein erzwungenes Warten, um dies zu tun. Ich habe die Frage seitdem irgendwie vergessen.
Robert

Antworten:



5

Öffnen Sie PowerShell

$files = Get-ChildItem -Recurse 
foreach ($file in $files){
    c:\windows\System32\notepad.exe $file.FullName
}

Get-ChildItem ruft eine Liste von Dateien als Objekte aus dem aktuellen Unterverzeichnis ab. "-recurse" enthält Unterverzeichnisse. Dies platziert es in ein Array $ Files.

Die foreach-Schleife durchläuft jede Datei und ruft den Editor mit dem Befehlszeilenargument des vollständigen Dateinamenpfads zu jeder Datei auf.

ACHTUNG: Testen Sie den obigen Code in einem Verzeichnis mit einigen kleinen Textdateien, da dadurch für jede Datei eine Instanz von Notepad geöffnet wird.

Das sollte Ihnen eine Vorstellung davon geben, wie Sie vorgehen sollen, was Sie tun möchten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.