2016-12-09 6 views
1

Ich habe diesen Code:Batch: „usebackq“ zu diesem Zeitpunkt nicht erwartet

setlocal enableextensions 
for "usebackq" %%i in (`dir /b`) do echo * %%i 
endlocal 

Was ich tun möchte, ist ganz einfach: der Inhalt des aktuellen Verzeichnisses mit * Präfix drucken. Etwas wie folgt aus:

* .idlerc 
* .oracle_jre_usage 
* .swt 
* Searches 
* Contacts 
* Downloads 
* My Directory 
* Documents 
* Desktop 
* Favorites 
* Images 
* Saved Games 
* Music 
* 3D Objects 

Aber, wenn es ausgeführt wird, heißt es:

"usebackq" zu diesem Zeitpunkt nicht erwartet

Ich bin neu mit für Aussagen im Stapel Kann jemand helfen?

+1

Verwendung nicht brauchen 'für/F„usebackq“...' – jeb

+2

bearbeiten nicht die Antwort darauf gelöst zu markieren. Klicken Sie einfach auf die akzeptierte Markierung ist genug –

+1

Lesen Sie die Hilfe für den Befehl FOR. Wenn Sie die Option '/ D' mit dem FOR-Befehl verwenden, müssen Sie nur den Stern für die IN-Klausel verwenden. Ihr Code und die von Ihnen akzeptierte Antwort listen ** Dateien und Ordner ** auf. – Squashman

Antwort

2

Verwenden FOR /F und Sie müssen keine Anführungszeichen hier auf Ihre Option verwenden *, weil es keine Leerzeichen darin sind:

setlocal enableextensions 
FOR /F usebackq %%i IN (`DIR /B`) DO ECHO * %%i 
endlocal 

* die Anführungszeichen Weggehen in würde nicht schaden, wenn

+1

Warum sollten Sie die Anführungszeichen weglassen? In den meisten Fällen möchten Sie Zitate um die Optionen – jeb

+0

schlechten Wortlaut meinerseits - ich oben bearbeitet –

+2

Es steht immer noch, dies ist der einzige Fall, in dem Sie sicher die Zitate weglassen können. Selbst eine einfache Option wie 'Tokens = 1' benötigt Anführungszeichen oder andere Escapezeichen. Sie sollten immer Quoes für die Optionen verwenden, nur in dem seltenen Fall, dass Sie ein Anführungszeichen als Trennzeichen verwenden, können Sie keine umgebenden Anführungszeichen verwenden. – jeb

1

Ich sehe Ihr Beispiel zeigt nur Verzeichniseinträge, keine Dateien, so könnte dies besser sein.

for /f "delims=" %%i in ('dir /b ') do echo * %%i 

Bei der Verwendung von einfachen Anführungszeichen Sie die "usebackq"

+0

Ich wollte sowohl Dateien als auch Ordner aufzählen, aber ich hatte keine Dateien in diesem Beispielordner. –

+0

Dann @Macro Mann Batch ist in Ordnung, solange Sie nicht Namen mit Leerzeichen haben. Ich habe meine obige Version geändert – LotPings

Verwandte Themen