2016-10-22 5 views
0

FORコマンドが期待どおりに機能しない理由を理解しようとしています。ここでFORコマンドが機能しない(再帰的キーなしで使用する場合のみ)

は私のファイルとフォルダの構造である:

Test 
| 
|------ foo.txt 
|------ bar.txt 
| 
|------ Exclude 
     (here placed files that should not be processed) 
      | 
      |------ aaa.txt 
      |------ bbb.txt 

タスクがfoo.txtのとbar.txtを処理してもaaa.txtとbbb.txtを処理することを避けるためです。

以下は私が試した3つの方法です。

第1の方法。それは仕事ですが、/r(再帰的)キーが必要なので、私のニーズを満たしません。

for /r "C:\Test" %f in (*.txt) do type %f 

第2の方法です。それが私がやろうとしていることです。それは動作しません。 Insted、それは私にエラーを与える:"C:\ Test"は今回は予期せぬでした。

for "C:\Test" %f in (*.txt) do type %f 

第3の方法です。それは動作し、現在私は回避策としてそれを使用していますが、私はまだ第2のアプローチが失敗する理由が不思議です。

cd "C:\Test" 
for %f in (*.txt) do type %f 
+0

元、現在のディレクトリを維持して第三の方法の別の製剤を二重にする必要があります –

答えて

2

/rスイッチなしで、ベースforコマンドの構文は次のとおりです

for %var in (set) do ... 

は、あなたがそれをやっているフォルダを含めることはできませんで、それがあることを示しているfor /?ヘルプを読みます。

あなたはc:\Test内のファイルを処理する必要があるとして、その後、あなたのセットは、そのフォルダ内のファイルですので、

for %a in ("c:\Test\*.txt") do type "%a" 

ノート:バッチ内for交換可能なパラメータのパーセント記号を提出することを覚えています`pushdは "C:\テスト" で...`/`popd`%fの`/`

for %%a in ("c:\Test\*.txt") do type "%%a" 
関連する問題