2016-10-16 25 views
3

私はバッチファイルと遅延された拡張で遊んでいます。
ディレクトリ内のすべてのアイテムのファイル/フォルダ名を単に印刷しようとしています。拡張された拡張エラー

@ECHO off 

SET title=%1 
SET mp4="mp4" 
SET mkv="mkv" 
SET avi="avi" 
SET minimumSize=300 

CD "E:\Documents\Films\Need_compressing" 
SETLOCAL ENABLEDELAYEDEXPANSION 
FOR %%i IN (*) DO (
    SET item = %%i 
    ECHO !item! 
    :: print dir/file name 
    :: if "!i!" == "%title%" (
    :: echo "found file!" 

    :: 'if' directory 
    :: if exist "%title" (
    ::  echo "is a directory" 
    ::  cd %title% 
    ::  echo "title: " %title% 
    ::  for %%f in (*.*) do (

    ::   set file = %%f 
    ::   set extension = %%~xf 
    ::   set fileSize = %%~zf 

    ::   if %extension% == %mp4% if %extension% == %mkv% if %extension% == %avi% (
    ::    if %fileSize% gtr %minimumSize% (
    ::     move %file% %compressFolder% 
    ::    ) 
    ::   ) 
    ::  ) 
    :: ) 
    ::) 
) 
ENDLOCAL 

私はこれを行うと、私はエラーになるだろう:私は考えることができる

The syntax of this command is incorrect

唯一のことは、私は間違って遅れ拡張を使用しているということです。

+0

使用しているWindowsのバージョンは何ですか? –

+0

Windows 10 Education x64 – wmash

答えて

3

構文エラーの理由は、::がコメント用ではないためです。彼らは実際にラベルマーカーです。コメントにはREMを使用してください。

その他の問題...

また、あなたは電話を使用する場合の遅延拡張を使用する必要はありません=

SET item=%%i 

周りのスペースを削除します。

CALL ECHO %%item%% 

また、覚えておいて、このFORコマンドを使用すると、ファイル(なしフォルダ)のみが表示されます。フォルダとファイルが必要な場合は、DIR /BFOR)を使用してください。あなたがそれらを処理したい場合は、このようなFOR /Fを使用することができます。

FOR /F "delims=" %%a IN ('DIR /B') DO (echo do stuff with "%%~a") 

あなたの更新されたファイルに基づいて、(編集) 、また、あなたのEに切り替わりますどのCD /Dを使用したい場合があります(あなたがない限り既にE:にありますが、その場合は必要ありません)。

+0

まだ見ていないにもかかわらず同じエラー... – wmash

+0

あなたはバッチファイル全体を含めていません。それはここで働く。 – soja

+0

バッチファイル全体を含めるように投稿を修正します。 – wmash

関連する問題