我如何修复%%我此时出乎意料?

时间:2016-09-30 14:58:11

标签: batch-file format command weka

我尝试使用命令

将批处理脚本代码用于emobase配置
cd "cd\Users\Admin\Desktop\recording\angry"

for %%i in (*) do "C:\Users\Admin\Desktop\openSMILE\openSMILE-2.1.0\bin\Win32\SMILExtract_Release.exe" -c "C:\Users\Admin\Desktop\openSMILE\openSMILE-2.1.0\config\emobase2010.conf" -i %%i -O "C:\Users\Admin\Desktop\DataSample_for_Emobase2010.arff" -classlabel 1

当我运行它时会说%%我此时出乎意料。我该如何解决这个问题?

我是编程新手,我不知道文件夹中的内容是否重要,但内部是一堆.arff格式的文件。我想把所有文件都转换成一个.arff文件。我想也许里面的文件需要是.wav格式所以我试着把它做到一个充满.wav文件的文件夹,但它仍然显示同样的问题。我正在使用openSMILE来配置它,并将使用最终产品在weka上运行

2 个答案:

答案 0 :(得分:1)

您没有指定for语句操作。

for /f
for /l

我认为你的意思是:

cd "cd\Users\Admin\Desktop\recording\angry"
for /f %%i in (*) do "C:\Users\Admin\Desktop\openSMILE\openSMILE-2.1.0\bin\Win32\SMILExtract_Release.exe" -c "C:\Users\Admin\Desktop\openSMILE\openSMILE-2.1.0\config\emobase2010.conf" -i %%i -O "C:\Users\Admin\Desktop\DataSample_for_Emobase2010.arff" -classlabel 1

答案 1 :(得分:0)

使用此代码创建一个test.bat。

通过用":: "注释掉它们,将两条GOTO行切换为最适合您的行 GOTO TEST1 :: GOTO TEST2

我没有这个程序,所以未经测试。希望这有助于您了解如何使用for命令。

:: RESTART SCRIPT WITH ADMIN RIGHTS AND IN A MAXIMIZED WINDOW IF NOT ALREADY SO
@ECHO OFF
IF NOT "%1"=="MAX" (powershell -WindowStyle Hidden -NoProfile -Command {Start-Process CMD -ArgumentList '/D,/C' -Verb RunAs} & START /MAX CMD /D /C %0 MAX & EXIT /B)

:------------------------------------------------------------------------------------------------------

:: BASIC BATCH SCRIPT TEMPLATE

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
COLOR 0A
TITLE EMOBASE CONFIGURATION

SET WorkingDir=C:\Users\Admin\Desktop\recording\angry
SET SMILE=C:\Users\Admin\Desktop\openSMILE\openSMILE-2.1.0\bin\Win32\SMILExtract_Release.exe
SET FNAME1=C:\Users\Admin\Desktop\openSMILE\openSMILE-2.1.0\config\emobase2010.conf
SET FNAME2=C:\Users\Admin\Desktop\DataSample_for_Emobase2010.arff

:: CHANGE DIRECTORY
PUSHD "%WorkingDir%"
:: OR USE THIS IF IT WORKS TO CHANGE THE DIRECTORY
PUSHD "%USERPROFILE%\Desktop\recording\angry" 

GOTO TEST1
:: GOTO TEST2

:TEST1
:: METHOD 1
:: REMOVE ECHO BELOW WHEN READY TO RUN
FOR %%G IN (*.*) DO (
ECHO "%SMILE%" -c "%FNAME1%" -i "%%G" -O "%FNAME2%" -classlabel 1
)

:TEST2
:: METHOD 2
:: REMOVE ECHO BELOW WHEN READY TO RUN
FOR %%G IN (*.*) DO (
SET FILES=%%~fG
ECHO "%SMILE%" -c "%FNAME1%" -i "!FILES!" -O "%FNAME2%" -classlabel 1
)

ECHO.
TITLE Done! EMOBASE CONFIGURATION
PAUSE
EXIT