2016-12-09 14 views
1

我有這樣的代碼:批:「有usebackq」預計不會在這個時候

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

,我想要做的是非常簡單的:與*前綴打印當前目錄的內容。事情是這樣的:

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

但是,在執行時,它說:

「有usebackq」 預計不會在這個時候

我是新與報表在批處理中。有人可以幫忙嗎?

+1

使用'爲/ F「有usebackq」 ...' – jeb

+2

不編輯答案,以紀念它解決。只需單擊接受的標記就足夠了 –

+1

閱讀FOR命令的幫助。如果你在FOR命令中使用'/ D'選項,那麼你所需要做的就是使用IN子句的星號。您的代碼和您接受的答案將枚舉**文件和文件夾**。 – Squashman

回答

2

使用FOR /F,你不需要使用引號*您選擇這裏,是因爲有在它沒有空格:

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

*在離開引號不會做任何傷害,雖然

+1

爲什麼你應該省略引號?在大多數情況下,您希望圍繞選項 – jeb

+0

引用不好的措辭 - 我編輯上面 –

+2

它仍然存在,這是您可以安全省略引號的唯一情況。即使像'tokens = 1'這樣簡單的選項也需要引號或其他轉義。你應該總是使用quoes的選項中,只有在使用引號作爲分隔符的極少數情況下,你不能使用包圍引號 – jeb

1

我看到你的示例只顯示目錄條目,沒有文件,所以這可能會更好。

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

如果使用單引號,你不需要"usebackq"

+0

我想列舉文件和文件夾,但我沒有在example文件夾的任何文件。 –

+0

然後@Macro Man's Batch很好,只要你不需要帶空格的名字。我改變了我的以上版本 – LotPings

相關問題