2016-05-23 5 views
0

簡潔にするために、フォルダ内のフォルダのリストを作成して、ユーザがフォルダを簡単に選択できるようにします。ここでBatch For Loopがフォルダのリストに対して機能しない

は私が持っているものです。

@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は、リスト内の最後のフォルダに設定されていることで、それは作成されている唯一の変数ですが、カウントは正しくエコーされています。私は 'OPTION#'という名前の変数のリストでした... 私のコマンドラインに 'set o'を入力すると、Option 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 OS標準です。現在のウィンドウではサポートされていません。 \\は、文字列の先頭に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コマンドが間違っていた(ミスペルドと間違ったケーシング)というメッセージは表示されませんでした」*には2つの重大な偽りがあります。 ECHOをOFFに設定してもエラーメッセージは表示されません。また、コマンドとオプションの構文は大文字と小文字を無視します(FOR変数を除く)。また、余分なものは一般的には問題を起こさないが、避けるべきである。 – dbenham

関連する問題