0

c:\Program Filesという名前のディレクトリにファイルがありますtmp.txt

tmp.txt の各行に対して、コマンドを実行したいと思います。

コマンド プロンプトforループを使用しようとしていますが、tmp.txt が見つかりません。c:\Program Filesこのコマンドをディレクトリから実行する必要があることに注意してください 。

これが私がしようとしている方法です:

C:\>for /F %i in ("c:\Program Files\tmp.txt") do echo "%i"

出力は次のとおりです。

C:\>echo "c:\Program"
"c:\Program"

つまり、パラメーターとしてfor考慮"c:\Program"され、それをに渡すことを意味しますdo

ファイルをに入れ、ループを次のようc:\に実行すると-for

C:\>for /F %i in (c:\tmp.txt) do echo "%i"

それはうまく動作します

forだから私の質問は、ループにフルパスを渡しforてファイルと見なすにはどうすればよいですか

4

1 に答える 1

2

usebackq次のオプションを使用しfor /fます。

for /f "usebackq" %i in (...)

これにより、ヘルプに次のように記載されているように、さまざまな引用符のセマンティクスが変更されます。

usebackq        - specifies that the new semantics are in force,
                  where a back quoted string is executed as a
                  command and a single quoted string is a
                  literal string command and allows the use of
                  double quotes to quote file names in
                  file-set.
于 2012-04-05T10:24:36.147 に答える