ここで何が起こっているのか非常に混乱しています。 docsから見つかったすべてのdocxを作業ディレクトリにコピーする必要があります。何らかの理由でforループ内の%% fが%fとして表示されます。私はエコーをやっただけで、フォルダがうまく印刷されました。同じことが%% rと%rにも起こります。私はこれを間違って書いていますか?ネストループで変数%% fを使用するバッチファイルが失敗する
set filepath=%1
for /f %%f in ('dir /ad /b %filepath%') do (
if exist "%filepath%\%%f\docs" (
for /r %filepath%\%%f\docs %%r in (*.docx) do (
echo %%f
copy %%r "%cd%\edited"
)
)
)
このバージョンでは使用しません
if exist "C:\Documents\WordDocs\Data1\docs" (for /R C:\Documents\WordDocs\%f\docs %r in (*.docx) do (
echo Data1
copy %r "C:\Users\admin\Desktop\Test"
)))
が、出力は代わりのData1の%fとして、それを表示します。 %% fの代わりに%fを使用するだけですか? – Eric
if文までは正常に動作します。そのとき、%% fをネストしたforループの内側で使用しようとすると、それは想定されていた値の代わりに%fが出力されます。 – Eric
これは興味深い問題です!これは '% '記号とは関係なく、' FOR/R'コマンドに何らかの制限があるようです。おそらく 'for/r'コマンドは変数ではなくリテラルパラメータのみを許可しますか? –