TOP > Up > Today
名前: ひろ BBSから
質問:http://pasokoma.jp/47/lg474746#474759
携帯:http://pasokoma.jp/m?num=474759&ope=v
--
pandoraさんは No.474758「Re:バッチファイルのfor文について」で書きました。
pandora様
度々お世話になります。自分の環境に合わせて記述し、実行したのですが一箇所だけ上手くいかない場所がありました。
以下に実行結果の一部を書かせていただきます。
----------------実行結果の一部------------------------------------------------
SETLOCAL ENABLEEXTENSIONS ENABLED
ELAYEDEXPANSION
rem System Define
SET DELNUMBER=3
SET DELNAME1=aaa
SET DELNAME2=bbb
SET DELNAME3=Temp
rem Start Remove Folder
SET DIRPATH=C:\Documents and Settings\User\My Documents\Work
echo C:\Documents and Settings\User\My Documents\Work
CD /D C:\Documents and Settings\User\My Documents\Work
CD
FOR /L %I IN (1 1 3) DO (
SET DELETEFOLDER=!DELNAME%I!
IF /I NOT "!DELETEFOLDER!" == "" (
ECHO DeleteFolder: !DELETEFOLDER!
FOR /F %A IN ('DIR /S /AD /B "!DELETEFOLDER!"') DO (
ECHO %A
RMDIR "%A" /S /Q 1>NUL
)
)
)
(
SET DELETEFOLDER=!DELNAME1!
IF /I NOT "!DELETEFOLDER!" == "" (
ECHO DeleteFolder: !DELETEFOLDER!
FOR /F %A IN ('DIR /S /AD /B "!DELETEFOLDER!"') DO (
ECHO %A
RMDIR "%A" /S /Q 1>NUL
)
)
)
DeleteFolder: aaa
(
ECHO C:\Documents
RMDIR "C:\Documents" /S /Q 1>NUL
)
C:\Documents
指定されたファイルが見つかりません。
----------------実行結果の一部------------------------------------------------
DeleteFolder: aaa
というのがしっかり表示されているので、問題となっているのは最後のFor文
FOR /F %%A IN ('DIR /S /AD /B !DELETEFOLDER!') DO (
ECHO %%A
RMDIR "%%A" /S /Q >NUL
)
ここで%%Aのパスが半角スペースで切れてしまっているのですが、
どこの時点で""(ダブルクオーテーション)で囲めば良いのでしょうか?
For文のDIR文内の!DELETEFOLDER!を""で括ると、DIR文が成立しないようですし、
FOR /F "%%A" IN ('DIR /S /AD /B !DELETEFOLDER!') DO (
としてもダメみたいでお手上げ状態です。
フォルダパスをスペースのないCドライブ直下に置いて試してみたところ、希望通りの実行結果を得ることが出来ましたっ !!
>環境変数 %USERPROFILE% を利用すると、現在ログオンしてるユーザーの
Documents and Settings PATHを入手できるって知ってました?
知りませんでした・・・。
今回のバッチファイルはあくまで自分の環境のみで実行することを前提としていましたので、
そこまで考えが回りませんでしたが、自分以外の環境で実行するならば、そういったことも必要なのだと納得しました。
--
== 掲示板URL: http://pasokoma.jp/bbs ==
配信の停止: http://pasokoma.jp/taikai
本メールマガジンへの返信はなさらないで下さい
== 投稿はパソコン困りごと掲示板でお願い致します ===
TOP > Up > Today