2017-10-16 7 views
1

次のコードを書いて、複数のフォルダ(フォルダ1、フォルダ2など)からファイルとサブフォルダの両方を削除しました。フォルダ名にスペースがない場合、スクリプトは正常に動作しますしかし、それはそこにスペースが。パスがドットで終了したときに一時ファイル(files2del.txt)およびサブフォルダを削除することができない。フォルダパスに空白を含むバッチスクリプト

@echo off 

setlocal EnableDelayedExpansion 

set folder[0]=Folder 1 
set folder[1]=Folder 2 

for /l %%s in (0,1,1) do (
    set "var=C:\directory\!folder[%%s]!" 
    dir "!var!"/s/b/a | sort /r >> !var!\files2del.txt 
    for /f "delims=;" %%D in (!var!\files2del.txt) do (del /q "%%D" & rd "%%D") 
    pause 
) 
exit 

以下の行が問題のようです。

for /f "delims=;" %%D in (!var!\files2del.txt) do (del /q "%%D" & rd "%%D") 

%、引用符などさまざまなものを試しましたが、役に立たないものです。

おかげ

答えて

1

はしてみてください:

for /f "usebackq delims=;" %%D in ("!var!\files2del.txt") do (del /q "%%D" & rd "%%D") 

あなたはusebackqオプションはused.ToughそれはFOR /?メッセージで言及されていない時にファイルを読み込むときに二重引用符を使用することができます。

+0

ありがとうございました – learningpython

+1

'FOR'コマンドヘルプファイルの' usebackq'部分から:**ファイルセットのファイル名を引用符で囲むことができます** – Squashman

関連する問題