.batまたは.cmdファイルを含むディレクトリ内の各ファイルをどのように反復しますか?
簡単にするために、ファイル名またはファイルパスをエコーするだけの回答を提供してください。
.batまたは.cmdファイルを含むディレクトリ内の各ファイルをどのように反復しますか?
簡単にするために、ファイル名またはファイルパスをエコーするだけの回答を提供してください。
回答:
コマンドラインの使用法:
for /f %f in ('dir /b c:\') do echo %f
バッチファイルの使用:
for /f %%f in ('dir /b c:\') do echo %%f
更新:ディレクトリに名前にスペースが含まれるファイルが含まれている場合、for /f
コマンドが使用している区切り文字を変更する必要があります。たとえば、パイプ文字を使用できます。
for /f "delims=|" %%f in ('dir /b c:\') do echo %%f
更新2:(元の回答から1年半後:-))ディレクトリ名自体に名前にスペースが含まれているusebackq
場合は、for
次のオプションを使用できます。
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f
また、出力リダイレクトまたはコマンドパイピングを使用する必要がある場合は、エスケープ文字(^
)を使用します。
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f
/f
必要for
ですか?ヘルプドキュメントによると、/f
フラグは各ファイルを開いて読み取ります。ファイルをエコーしたり、ファイル名を変更するために必要ですか?
'dir /b "c:\program files"'
する必要があります`dir /b "c:\program files"`
または、次を使用します。
forfiles /s /m *.png /c "cmd /c echo @path"
forfilesコマンドは、Windows Vista以降で使用できます。
最も簡単な方法:
コマンドラインから、次を使用します:
for %f in (*.*) do echo %f
バッチファイルから(%パーセント記号を2倍にする):
for %%f in (*.*) do echo %%f
フォルダーを1番目のパラメーターとして指定したバッチファイルから:
for %%f in (%1\*.*) do echo %%f
dir /B
出力を評価するよりもはるかにエレガントfor
です。
使用する
for /r path %%var in (*.*) do some_command %%var
と:
%%var was unexpected at this time.
正確な例を挙げられますか?for /r . %%var in (*.*) do echo %%var
別の方法:
for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"
"%~nf"
は、拡張子なしのファイル名を表します。f
は、for
部分的に指定された変数の名前です。ドキュメント:docs.microsoft.com/en-us/previous-versions/windows/it-pro/...