2016-12-27 7 views
0

cmdの構文に問題があり、サイドカーを持たない特定のフォルダ内の特定の拡張子を持つファイルを削除しようとしています。例えば:フォルダが含まれている場合:win cmd:サイドカーのないファイルを削除する

1.Aを、1.B、2.A、3.A、4.A、4.B

はバットだけ

を削除する必要があります

2.A、3.A

です。

私がこれまで生憎

@echo off 

FOR %%x IN (%1\*.A) DO 
(
    IF not exist "%1\%x.B" del "%1\%x.A" 
) 

主に感謝任意の助けを働いていない、本当の近くなければならないんだコード。質問へ

+3

変数を定義するには '%% x'を使用し、変数を使用するには'%x'を使用しています。それを使うには '%% x'を使う必要があります。 – SomethingDark

+1

'('は 'do'と同じ物理行になければなりません。 – Magoo

答えて

0

コメントは

  • オープン括弧はDOと同じ行にある必要がありますバッチスクリプトで使用する場合倍増し、一貫しなければならない変数パーセントFOR

    • 正しいです。しかし、このような単純なスクリプトでは、括弧の必要はありません。

    また、FOR変数のベース名のみが必要なので、~n修飾子が必要です。

    私は最初にPUSHDを使用することでコードをより堅牢にしました。

    @echo off 
    pushd %1 
    for %%F in (*.A) do if not exist "%%~nF.B" del "%%F" 
    popd 
    
  • +0

    ありがとう、これは本当に役に立ちます – Vobla

    関連する問題