IF这次没想到
IF was not expected this time
@rem videodir webm -> mp4
@rem audio acc video h264 overwrite optional
set /p videodir="directory>>> "
echo %videodir%
FOR %%i IN (%videodir%) DO %%~di
cd %videodir%
pause
set /p option="turn on overwrite? [y/n]>>> "
echo %option%
pause
IF %option%==y (
FOR /R %videodir% %%i IN (*.webm) DO ( ffmpeg -i "%%i" -y -c:a aac -c:v libx264 "%videodir%\mp4\%%~ni.mp4" )
) IF %option%==n (
FOR /R %videodir% %%i IN (*.webm) DO ( ffmpeg -i "%%i" -n -c:a aac -c:v libx264 "%videodir%\mp4\%%~ni.mp4" )
) ELSE (
echo "invaild value" )
pause
If
语句不断出错。先生请帮帮我
我尝试将 D:\school.webm
C:\school3.webm
文件都转换为 mp4,但无论我打开还是关闭覆盖选项,它都会不断出现错误。
) IF %option%==n (
应该是
) else IF %option%==n (
此外,更好的语法是 if /i "%option%"=="y"
,它针对 y hello
这样的条目提供了一些保护,而 /i
允许 case-insensitive 匹配。
使用 search
工具了解 choice
以及如何使用它也是一个好主意。
if
括号语句块是一种矫枉过正,你只有一个命令,所以不需要将它们括在括号中,事实上 else
也不需要。
要直接修复您的错误,只需将 IF %option%==n (
放在新的一行上。就是这样。
不过,我会鼓励您使用 choice
来处理这些...选择像脚本一样,它的构建目的是:
@echo off
rem videodir webm -> mp4
rem audio acc video h264 overwrite optional
set /p videodir="directory>>> "
pushd "%videodir%">nul 2>&1 || (echo no such dir "%videodir%" & exit /b 1)
choice /M "Overwrite?"
if %errorlevel% equ 1 set "opt=y"
if %errorlevel% equ 2 set "opt=n"
for /R %videodir% %%i in (*.webm) do ffmpeg -i "%%i" -%opt% -c:a aac -c:v libx264 "%videodir%\mp4\%%~ni.mp4"
popd
@rem videodir webm -> mp4
@rem audio acc video h264 overwrite optional
set /p videodir="directory>>> "
echo %videodir%
FOR %%i IN (%videodir%) DO %%~di
cd %videodir%
pause
set /p option="turn on overwrite? [y/n]>>> "
echo %option%
pause
IF %option%==y (
FOR /R %videodir% %%i IN (*.webm) DO ( ffmpeg -i "%%i" -y -c:a aac -c:v libx264 "%videodir%\mp4\%%~ni.mp4" )
) IF %option%==n (
FOR /R %videodir% %%i IN (*.webm) DO ( ffmpeg -i "%%i" -n -c:a aac -c:v libx264 "%videodir%\mp4\%%~ni.mp4" )
) ELSE (
echo "invaild value" )
pause
If
语句不断出错。先生请帮帮我
我尝试将 D:\school.webm
C:\school3.webm
文件都转换为 mp4,但无论我打开还是关闭覆盖选项,它都会不断出现错误。
) IF %option%==n (
应该是
) else IF %option%==n (
此外,更好的语法是 if /i "%option%"=="y"
,它针对 y hello
这样的条目提供了一些保护,而 /i
允许 case-insensitive 匹配。
使用 search
工具了解 choice
以及如何使用它也是一个好主意。
if
括号语句块是一种矫枉过正,你只有一个命令,所以不需要将它们括在括号中,事实上 else
也不需要。
要直接修复您的错误,只需将 IF %option%==n (
放在新的一行上。就是这样。
不过,我会鼓励您使用 choice
来处理这些...选择像脚本一样,它的构建目的是:
@echo off
rem videodir webm -> mp4
rem audio acc video h264 overwrite optional
set /p videodir="directory>>> "
pushd "%videodir%">nul 2>&1 || (echo no such dir "%videodir%" & exit /b 1)
choice /M "Overwrite?"
if %errorlevel% equ 1 set "opt=y"
if %errorlevel% equ 2 set "opt=n"
for /R %videodir% %%i in (*.webm) do ffmpeg -i "%%i" -%opt% -c:a aac -c:v libx264 "%videodir%\mp4\%%~ni.mp4"
popd