1


たとえば 、「foo」で始まり、日付が続く現在のディレクトリ内のすべてのフォルダを削除する必要があります。

  1. foo20120620
  2. foo20120513
  3. foob​​labla


現在の日付の例に一致する1つのフォルダーを正常に削除できます

set FOO_FOLDER=%CD%\foo%datetimef%      

echo Y | rd /s/q %FOO_FOLDER%     

しかし、fooで始まるすべてのフォルダーを削除することはできません。

私は次のようなことを試みました

set OLD_PATTERN="%CD%\foo"     
del %OLD_PATTERN%*

私はグーグルで検索し、このフォーラムですでに尋ねられているいくつかの質問に従おうとしましたが、それらは私にはあまり役に立ちません。

どんな提案も私にとって大きな助けになるでしょう。
Windows側でバッチスクリプトを実行する必要があります。

4

3 に答える 3

12

このコマンドを使用できますFOR /D

for /d %%p in (foo*) do rd /s /q "%%p"
于 2012-06-18T09:28:52.120 に答える
1

DOSバッチのコマンドの魔法...。

コマンドラインから

for /f "tokens=*" %f in ('dir .\foo* /ad/b') do rd "%f" /s/q 

バッチファイルから

for /f "tokens=*" %%f in ('dir .\foo* /ad/b') do rd "%%f" /s/q 

/ fは、角かっこ内の''でコマンドを実行し、そのトークンをトークン化します。tokens = *と言うことで、すべてのファイル/ディレクトリ名が1つの変数%fになります

ここに例があります

C:\temp>md foo3

C:\temp>md foo2

C:\temp>md foo1

C:\temp>dir
 Volume in drive C is TEST
 Volume Serial Number is F47F-AAE1

 Directory of C:\temp

18/06/2012  09:42 p.m.    <DIR>          .
18/06/2012  09:42 p.m.    <DIR>          ..
18/06/2012  09:42 p.m.    <DIR>          foo1
18/06/2012  09:42 p.m.    <DIR>          foo2
18/06/2012  09:42 p.m.    <DIR>          foo3
               0 File(s)              0 bytes
               5 Dir(s)  131,009,933,312 bytes free

C:\temp>for /f "tokens=*" %f in ('dir .\foo* /ad/b') do rd "%f" /s/q

C:\temp>rd "foo1" /s/q

C:\temp>rd "foo2" /s/q

C:\temp>rd "foo3" /s/q

C:\temp>dir /ad
 Volume in drive C is TEST
 Volume Serial Number is F47F-AAE1

 Directory of C:\temp

18/06/2012  09:42 p.m.    <DIR>          .
18/06/2012  09:42 p.m.    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  131,009,933,312 bytes free

C:\temp>
于 2012-06-18T09:27:34.477 に答える
0

これは古いことは知っていますが、FORコマンドは、パラメーターとパス名の形式の混同を避けるために、数字ではなく文字(%% Gなど)で識別されるパラメーター変数を作成することを言及する価値があると思いました。文字の場合は、文字(a、d、f、n、p、s、t、x、z)をFORパラメーターとして使用しないか、大文字のFORパラメーター文字を選択してください。

フォーマット文字では大文字と小文字が区別されるため、大文字を使用することも競合を回避するための良い方法です。%%aではなく%%A。

参照

于 2017-08-27T17:37:46.710 に答える