2016-10-21 2 views
0

私はバッチスクリプトを作成して、そのディレクトリからビデオファイルを抽出しています。
これまでのところ、特定の名前と一致するディレクトリに移動しています。私はそのディレクトリ内のすべての項目に対してFORループを実行しています。私は項目がディレクトリ(私は以前に行った)であるかどうかを確認したい場合は、そのディレクトリに移動し、他のものを行う。
IFステートメントがバッチスクリプトを中断する

問題は、第二IF文のことである(項目がディレクトリかであるかどうかを確認するためには)エラーを与えて、バッチスクリプトを破壊されています

) was unexpected at this time

私はそのIFを削除する場合コードは期待どおりに実行されます(IFステートメントはコードにあります)

CODE:

@ECHO off 

SET title=%1 
SET mp4=".mp4" 
SET mkv=".mkv" 
SET avi=".avi" 
SET minimumSize=300 
SET needCompressingDir="E:\Documents\Films\Need_compressing" 

CD %needCompressingDir% 
FOR /f "delims=" %%i IN ('DIR /B') DO (
    IF %%i == %title% (
     IF EXIST %%i (
      CD %%i 
      FOR /f "delims=" %%j IN ('DIR /B') DO (
       rem this 'IF' statement breaks it 
       IF EXIST %%j (

       ) ELSE (

       ) 
      ) 
     ) ELSE (
      MOVE %%i %needCompressingDir% 
     ) 
    ) 
) 
+3

'%% j'によって返されたファイル名に空白が含まれていますか?あなたは 'if exist" %% j "'(もし存在すれば "%% i" ')を使ってみるべきです。 – SomethingDark

+0

@SomethingDarkはい、それが起こる可能性があります。洞察のおかげで、可能な限りその方法を試してみましょう。 – wmash

+2

'IF EXIST" %%〜j "' – npocmaka

答えて

2

読むif /?

Performs conditional processing in batch programs. 

IF [NOT] ERRORLEVEL number command 
IF [NOT] string1==string2 command 
IF [NOT] EXIST filename command 
… 
    command   Specifies the command to carry out if the condition is 
        met. Command can be followed by ELSE command which 
        will execute the command after the ELSE keyword if the 
        specified condition is FALSE 

The ELSE clause must occur on the same line as the command after the IF. For 
example: 

    IF EXIST filename. (
     del filename. 
    ) ELSE (
     echo filename. missing. 
    ) 

あなたはcommandは両方ifelse部品の必須一部であることがわかります。 Windows cmd/.batインタープリタで受け入れられない空きコマンドブロック():コマンドではないとみなされます。項目がディレクトリかであるかどうかを確認するためにIF EXIST "%%~j\"(ノート末尾のバックスラッシュ)を使用

 FOR /f "delims=" %%j IN ('DIR /B') DO (
      rem this 'IF' statement breaks it 
      IF EXIST "%%~j\" (
       rem directory 
      ) ELSE (
       rem not directory 
      ) 
     ) 

を更新:少なくともREMコメント(効果なしでコマンド)を使用します。

関連する問題