Frage

ich Batch versuche einige rar ist zu extrahieren, die in einigen Verzeichnissen in einigen zip sind. Lange Rede kurzer Sinn ist dies meine Schleife durch die rar-Dateien:

for %%r in (*.rar) do (

unrar x %%r
)

Das Problem ist, dass %% r den falschen Wert bekommt. Wenn die Dateien Namen „Datei name.rar“ sind dann %% r den Wert „file“ wird -. Es auf dem ersten Platz hält in dem Dateinamen

Wie erhalte ich diese Schleife Datei Dateien mit Leerzeichen im Namen zu arbeiten?

Danke

War es hilfreich?

Lösung

Versuchen Sie folgendes:

for /f "usebackq delims==" %i in (`dir /b *.rar`) do unrar x "%i"

Wenn Sie es in einer Batch-Datei verwenden, erinnern Sie müssen die Prozentzeichen verdoppeln ihnen zu entkommen.

Andere Tipps

%%r wird die vollständigen Dateinamen einschließlich Leerzeichen enthalten. Es ist Ihr Anruf unrar die das Problem hat. Wenn der Dateiname Leerzeichen enthält, müssen Sie es in Anführungszeichen gesetzt werden, sonst unrar nicht in der Lage sein, zu sehen, dass die beiden (durch Leerzeichen getrennte) Parameter file und name.rar sind tatsächlich ein einzelner Dateiname mit einem Leerzeichen.

So folgendes funktioniert:

for %%r in (*.rar) do unrar "%%r"

Auch wenn Sie aer neugierig, wo das Problem liegt, ist es manchmal sehr hilfreich, um einfach den Programmaufruf mit Echo ersetzen:

for %%r in (*.rar) do @echo %%r

, wo Sie werden sehen, dass %% r die Leerzeichen in Dateinamen enthalten sind und sie nicht auseinander reißen.

Das Problem ist, dass ‚für‘ Raum als Standard begrenzt verwendet. Sie können diese Einstellung die delims = xxx verwenden. schauen hier Syntax. Oder Sie verwenden können, forfiles .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top