0

私はという名前のディレクトリにファイルを持っていますtmp.txtWindowsコマンドシェルでエスケープするには?

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

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

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

出力は次のとおりです:ここで

は、私がしようとしている方法ですforがパラメータとして"c:\Program"を考慮すると、私は置けばdo

にそれを渡していることを意味

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

ファイルをc:\にして、forをループとして実行します。

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

は、それだけで正常に動作します

だから私の質問はforがファイルとしてそれを考えるように私はforループへのフルパスを渡す行う方法IS-

答えて

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. 
+0

は魅力的です!感謝。 – user837208