0

ネストされたループでファイルにアクセスしてそのコンテンツを読み取ろうとしていますが、内側のループはファイルにアクセスできません..(バッチで)

コードは次のとおりです (スクリプト全体の一部)。

for %%b in (!directory!) do (
   echo File used: %%b
   for /f "delims= " %%c in (%%b) do (
      echo %%c
   )
)

問題は:

"%%b" が "C:\Documents and settings\test\test.txt" に等しい場合、内側のループは "C:\Documents" にアクセスしようとします (スペースがあるため)。「%%b」を二重引用符で囲むと、ファイル自体ではなく文字列として解析されます。

どうすれば対処できますか?ファイルは動的で、名前がわかりません...

ありがとう

4

1 に答える 1

2

FOR /F を使用して名前にスペースが含まれるファイルを読み取る場合は、USEBACKQ オプションを使用する必要があります。USEBACKQ は、さまざまな引用符のセマンティクスを変更します。通常、引用符なしはファイルを意味し、二重引用符は文字列を意味し、単一引用符はコマンドを意味します。USEBACKQ オプションは、引用符なしまたは二重引用符はファイルを意味し、一重引用符は文字列を意味し、逆引用符はコマンドを意味するように変更します。詳細については、コマンドプロンプトHELP FORから入力してください。

for %%b in (!directory!) do (
   echo File used: %%b
   for /f "usebackq delims= " %%c in ("%%b") do (
      echo %%c
   )
)
于 2013-02-21T17:14:40.807 に答える