FORループを使用してファイルを移動しようとしているときの構文エラー


2

指定されたフォルダ内の「フォルダ」フォルダ内のすべてのファイルをループ処理し、それらを別のフォルダに移動しようとしています。

私はこのコードを持っています:

@ECHO OFF
FOR /R C:\Users\user\Desktop\New^ folder^ 3\ %%F IN (folder\*.*) DO (
    MOVE %%F C:\Users\user\Desktop\New^ folder\
)
PAUSE

しかし、それは構文エラーを引き起こします。 しかし、%Eをエコーすると、各ファイルのフルパスを正しく表示します。

私はここで何をしていますか?

ありがとう。

回答:


2

スペースを含むリテラル文字列を引用符で囲む必要があります。

@ECHO OFF
FOR /R C:\Users\user\Desktop\New^ folder^ 3\ %%F IN (folder\*.*) DO (
    MOVE "%%~F" "C:\Users\user\Desktop\New folder\"
)
PAUSE

それは魅力のように働き、 '〜'が正確に何を意味するのかを説明する気にしています、そしてなぜ私は2番目のパラメータで '^'を使うことができないのですか?
bruneti12

@ bruneti12チルダ ~ (もしあれば)変数から周囲の引用符を削除します。逃げられない理由 ^ スペースは、MOSTプログラムがスペースをパラメーター区切り文字として使用することに関して非常に厳密であるためです。したがって、スペースを含む完全なパスが単一のパラメーターとしてmoveコマンドに送信されるようにしたい場合。引用符で囲む必要があります。変数修飾子の詳細については、 call /?。ここにいくつかの素晴らしいバッチ参考サイトがあります: robvanderwoude.com そして ss64.com
David Ruhmann
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.