- ベストアンサー
バッチファイルの繰り返し処理プログラムの書き方についての質問
- 特定のフォルダ内のファイルを1つずつ順番に実行プログラムに読み込むバッチファイルの組み方について質問しています。
- ファイルは存在しているが読み込まれない問題が発生しており、プログラムの組み方に詳しいベテランの方にアドバイスを求めています。
- 日々の勉強でプログラムの組み方について独学しているが、詰まってしまっているため、丁寧な指導とアドバイスを求めています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まず、サンプルから。 mp3フォルダの中には作業対象とする.mp3ファイルが入っている、と言う前提です。 他のファイルの場合は、for文の中の拡張子を変えてください。 (多分、wavetone は .wavファイルを吐くんですよね?) ------------------------------------------------- @echo off REM ターゲットフォルダ set targetDir=C:\Documents and Settings\ダウンロード専用\デスクトップ\mp3 REM wavetone 作業フォルダ set workDir=I:\ゲーム\PCゲーム\ステップマニア\BTC (beat counter)\bpmcount\wavetone251 REM ループ処理 for /f "usebackq delims==" %%A in (`dir /b /s "%targetDir%\*.mp3"`) do ( echo %%A echo START /D"%workDir%" wavetone.exe "%%A" ) pause ------------------------------------------------- 以下、解説です。 for文1行でループまで完了してしまうので、forの後に、start文を書いても%%Aが効かないです。 startまで含めてループさせるなら上記サンプルのように do の後の処理を ( ) で括ってください。 Documents and Settings のようにパスに半角スペースを含む場合は、上記サンプルのようにダブルクォートで括る必要があります。 wavetone とやらは知らないので、そこにどのような引数が必要なのかは、私にはわかりませんが、startで作業ディレクトリを指定しているので、少なくとも Documents and Settings のパスを与えてやる事が必要です。なので、forの結果の変数はフルパスを返すような書き方になっています。 いきなり処理するのではなく、動的に生成されるコマンドが正しいかをまず確認してください。 そのため、あえて start文は echo を付けてデバッグできるようにしてあります。 適当な1行、表示内容をコピーしプロンプトにペーストして実行してみてください。 成功すれば内容的にはOKなので、そこまで確認できたら、「echo START ...」を「START ...」にすれば、一括処理のバッチの出来上がりです。
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
何かメッセージは出てませんか?
補足
「ファイルが見つかりません」とエラー表示がでます。 DxDしての出力は問題なくできましたが順番に読み込みしてループして連続的な処理がしたいのですが良いアドバイスありませんか?
お礼
実際に使用してみたら上手くできました。分かりやすい解説も書いて頂き感謝していますありがとうございました。 こんな説明不足な私ごとに丁寧な指導やプログラムの書き方について学ばせていただいたことに心より感謝申し上げます。