Код такой, но сейчас он работает не так, как ожидалось:
@ECHO OFF
for /f %%i in ('dir *.mov /b') do call :test %%i
goto continue
:test
if "%1"= = "*compressed.mov" goto :eof
echo "%~f1"
goto :eof
:continue
pause
Здесь я хотел бы решить две проблемы:
Как избежать пробелов в именах файлов? т.е. Я хотел бы включить файл "video 1.mov" для теста, а не только "Диск:\путь\видео", а вместо этого "Диск:\путь\видео 1.mov"
Как не повторять любой файл, содержащий строку «сжатый» в конце его имени?
@Magoo, это решает вторую проблему :)
Возможно, что-то вроде этого подойдет:
@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
For %%G In ("*.mov") Do If /I "%%~xG" == ".mov" (Set "_=%%~nG"
SetLocal EnableDelayedExpansion
If /I Not "!_:~-10!" == "compressed" (EndLocal & Echo "%%~fG"
) Else EndLocal
)
Pause
В качестве альтернативы используйте findstr.exe
:
@For /F "EOL=? Delims = " %%G In ('Dir "*.mov" /A:-D /B 2^>NUL ^| %SystemRoot%\System32\findstr.exe /LIE ".mov" ^| %SystemRoot%\System32\findstr.exe /VLIE "compressed.mov"') Do @Echo "%__CD__%%%G"
@Pause
for /f "delims = " %%i in ('dir *.mov /b^|findstr /i /e /v /L /c:"compressed.mov"') do call :test %%i