BATは確かに非常に風変わりです。おそらくそれは「+1」と「)」の間のスペースですか?スクリプトにDelayedExpansionが含まれていますか?これは通常必要です。
サブルーチンを使用することをお勧めします。非常に便利な引数編集機能があります。「call/?」を見てください。
特に、call:MySub "File name.txt"と言うと、 "MySub"では、%1は"Filename.txt"になります-引用符を含みます。ただし、%〜1は引用符を削除します。これにより、スペースを含むファイル名を非常にうまく処理できます。したがって、「私のパスにはスペースがあります\%〜1」は「私のパスにはスペースがあります\ファイル名.txt」になります-文字列全体を一組の引用符で囲みます。ファイル名と拡張子を分割することもできます。
@echo off
setlocal ENABLEDELAYEDEXPANSION
set count=0
set MyDir=MyDir
FOR %%F IN ("*.*") DO call :MoveThatFile %%F
goto :EOF
:MoveThatFile
echo MOVE "%~1" "%MyDir%-file-0!count!.jpg"
SET /a count=!count!+1
goto :EOF