40

これが可能かどうか疑問に思っていましたか?Windows コマンド ラインの使用に慣れていませんが、作業中のプロジェクトで使用する必要があります。多数のファイルがあり、それぞれに対して関数を実行する必要があります。私はPythonでの作業に慣れていますが、明らかにこれは少し違うので、助けを求めていました.

基本的に、フォルダー内の 17 個のファイルを反復処理し、それぞれに対して関数を実行し (プロジェクト用にここにある特定のソフトウェアを使用しています)、一意の名前のファイルを出力する for ループが必要です (関数には通常、私が必要です)。出力ファイル名を述べるために)私はそれを吸い上げて、17のそれぞれに対して手作業で行うだけですが、基本的にはファイルのデータベースを作成し、それを17のそれぞれと比較しています。数百回だけど。for ループを使用すると、何日もの作業を節約できます。

提案?

4

3 に答える 3

49

コマンドラインインタープリターには、コマンドプロンプトまたはバッチファイル内から使用できるFOR構造が実際にあります。

あなたの目的のために、あなたはおそらく次のようなものが欲しいでしょう:

FOR %i IN (*.ext) DO my-function %i

これにより、現在のディレクトリ内の拡張子が* .extの各ファイルの名前がmy-functionに渡されます(たとえば、別の.batファイルの場合があります)。

その(*.ext)一部は「filespec」であり、ファイルのセットを指定する方法にかなり柔軟性があります。たとえば、次のことができます。

FOR %i IN (C:\Some\Other\Dir\*.ext) DO my-function %i

別のディレクトリで操作を実行します。

一般に、filespecとFORには多数のオプションがあります。見る

HELP FOR

詳細については、コマンドプロンプトから。

于 2012-06-25T15:21:40.713 に答える
6

これは、探しているものを見つけるのに役立つかもしれません... バッチ スクリプト ループ

私の答えは次のとおりです。

@echo off
:start
set /a var+=1
if %var% EQU 100 goto end
:: Code you want to run goes here
goto start

:end
echo var has reached %var%.
pause
exit

start ラベルの下にあるコマンドの最初のセットは、変数 %var% が 100 に達するまでループします。これが発生すると、通知され、終了できます。このコードは、100 を 17 に変更してコードを配置するか、call コマンドの後にバッチ ファイルのパス (ファイルを Shift + 右クリックし、[パスとしてコピー] を選択) を使用してコメントを配置することで、ニーズに合わせて調整できます。

于 2016-02-25T21:25:50.027 に答える
3

を追加することも検討して"ください。

たとえば、for %i in (*.wav) do opusenc "%~ni.wav" "%~ni.opus"非常に良いアイデアです。

于 2018-05-06T09:45:03.877 に答える