2016-05-23 176 views
0

爲了保持簡短,我想創建一個目錄中的文件夾列表,使用戶更容易選擇一個文件夾。批處理循環不工作的文件夾列表

這裏是我有:

@echo off 

Setlocal EnableDelayedExpansion 
... 

set /a Ocount=0 

for /d %%a in (...\listofoptions\*) do (

    set /a count+=1 
    set Option !count!=%%a 
    echo Option !count! - %%a 
) 

... ... ...

但我的問題是,選項0被設置爲最後一個文件夾列表中和它是唯一被創建的變量,但count正確地被回顯。我是名爲'OPTION#'的變量列表... 當我在我的命令行中輸入'set o'時,只有選項0出現。

Option 0 = last folder 
Ocount = 26 
+0

不要編輯在你的問題的代碼來解決所指出的錯誤一個答案 - 這破壞了答案的上下文。 – dbenham

回答

0
Echo Off 
Setlocal ENABLEDELAYEDEXPANSION 

Set Count=0 

For /f "delims=" %%A in ('dir /ad /b c:\windows') do (
Set /a "Count=Count + 1" 
Echo !Count! %%A 
) 

當你有echo off你沒看到你SelLocal命令是錯誤消息(拼寫錯誤和錯誤的外殼)。

這是沒有意義的(...\listofoptions\\...是父母父母的Novell操作系統標準。當前窗口不支持。 \\表示在字符串的開始處後面跟着UNC樣式路徑。

count+=1在它前面需要一個set /a

這給了你這bff.vbs

要使用對話框

on error resume next 
Set bffShell = CreateObject("Shell.Application") 
Set bff = bffShell.BrowseForFolder(0, "Select the My Documents folder", 9) 
If Err.number<>0 Then 
     MsgBox "Error Setting up Browse for Folder" 
    Else 
     A = bff.ParentFolder.ParseName(bff.Title).Path 
     If err.number=424 then err.clear 
     wscript.echo A 
End If 

名稱

For /f "delims=" %%A in ('cscript //nologo "c:\folder\bff.vbs"') Do echo %%A 
+0

\\是一個錯字,我沒有抓住它。感謝您的回覆。 –

+0

@CubanBeans - 你不應該在你的問題代碼中輸入錯別字 - 你應該使用複製並粘貼你已經驗證過的代碼來準確地展示你的問題。 – dbenham

+1

陳述*「正如你迴應你一樣,沒有看到你的SelLocal命令錯誤的信息(拼寫錯誤和錯誤的外殼)。」*有兩個嚴重的錯誤。將ECHO關閉不會隱藏錯誤信息。命令和選項的語法忽略大小寫(FOR變量除外)。另外,額外\通常不會造成問題,儘管它們當然應該避免。 – dbenham