2017-01-27 7 views
0

ここにアマチュアコーダーがあります。私は古いRスクリプトを持っていて、複数のフォルダにまたがるファイルに対してSoXの統計を実行し、その出力をtxtファイルに書き込みます。ピアは、Windowsマシンでそのファイルを使用するように要求しましたが、.batファイルをクリックして実行できるようにしたいと考えています。私は1つを作ったが、SoXの統計情報をバッチファイルのウィンドウに出力し、統計情報の出力は空白になる。私はそれがRが標準エラーを処理する方法のために読んだが、私の問題の解決策を見つけることができない。私は本当にRに精通していますが、Pythonを教えてきました。そのような代替言語ソリューションがあれば、私はすべて耳にします。事前に.bat経由で実行するときにSoX統計をファイルに書き込む

マイ "SOX-stats.R" スクリプト

setwd("~/R/sox-stats/") 

for(l in list.dirs(recursive=FALSE)){ 
    setwd(paste0("~/R/sox-stats/", l)) 
    print(paste0("Directory set to ", l)) 
    dir.create("./stats/", showWarnings = FALSE) 
    directoryAll <- list.files() 
    statFolder <- list.files(pattern="stats") 

    for(file in setdiff(directoryAll, statFolder)){ 
    firstSox <- paste("sox \"",file,"\" -n stats",sep="") 
    write(system(firstSox, intern = TRUE), paste("./stats/", file, "_stats.txt", sep="")) 
    print(paste0(file, " has been processed."))  
    } 
} 

私の.batファイルは

@ECHO OFF 
ECHO Hello, so you want to get some SoX Stats? 
ECHO ------------------------------------------------ 
ECHO   Press any key to start me up! 
PAUSE >NUL 
cd C:\Program Files\R\R-3.3.0\bin 
rscript sox-stats.R 
IF ERRORLEVEL 1 ECHO SoX Says: Something went wrong. Check messages 
above for clues. Press any key to close SoX Stats. 
IF NOT ERRORLEVEL 1 ECHO SoX Says: PROCESSING COMPLETE. Press any key to close this window 
and open your "sox-stats" folder. 
pause >nul 
IF NOT ERRORLEVEL 1 %SystemRoot%\explorer.exe "C:\Users\user\Documents\R\sox-stats" 

ありがとう!

答えて

0

これにアプローチする1つの方法は、ジュリア(available for Windows)を使用することです。このコードは、ジュリアにコンソールコマンドを合図するためにバッククォートを使用するという名前のファイルにパイプを設定し、全体のことを実行します

run(pipeline(`soxi mytest.wav`,"soxi.out")) 

:プロセスの肉のようなものだろう。ファイル名の配列にreaddir()で必要に応じてディレクトリの内容を調べ、必要に応じて配列にフィルタを配置することができます。

関連する問題