目次一覧
状態:-
閲覧数:15,796
投稿日:2019-11-22
更新日:2019-11-23
currentディレクトリ内で実行 / 任意のディレクトリ内で実行
currentディレクトリ内で実行 / 任意のディレクトリ内で実行
currentディレクトリ内で実行
▼C:\mp4data\delete-part-filename.bat
setlocal enabledelayedexpansion cd /d %~dp0 set keyword=M01 for /f "tokens=*" %%i in ( 'dir /b ^| findstr /i "%keyword%"' ) do ( set a=%%i ren "!a!" "!a:%keyword%=!" ) |
ファイル名の一部削除を行うバッチファイルが欲しいのですが..
任意のディレクトリ内で実行
バッチファイルの基本
「遅延環境変数」や「環境変数の遅延展開」を使用する場合
変数セットするより前に「setlocal enabledelayedexpansion」を記述する
変数を展開するとき
% ではなく、! を使用する
変数
set F= とした場合は、F が変数となる
上記変数を展開する時
%F% ではなく、!F! を使用する
変数セットするより前に「setlocal enabledelayedexpansion」を記述する
変数を展開するとき
% ではなく、! を使用する
変数
set F= とした場合は、F が変数となる
上記変数を展開する時
%F% ではなく、!F! を使用する
対象ディレクトリまでのパスを指定
ファイル名の一部(指定文字列「M01」)を削除する
▼C:\Users\user\Desktop\delete-part-filename.bat
setlocal enabledelayedexpansion for %%i in (L:\hoge\*M01.xml) do ( set F=%%~ni set F=!F:M01=! ren %%~fi !F!%%~xi ) |
コメントあり
rem ---環境変数、遅延展開使用の宣言--- setlocal enabledelayedexpansion rem ---M01を含む拡張子 xml を複数抽出、 1 個ずつ繰り返し処理を行う--- for %%i in (L:\hoge\*M01.xml) do ( rem ---変数 F にファイル名をセット、拡張子は除く set F=%%~ni rem ---ファイル名の文字列の M01 を空文字に置換、→ 文字列 M01 を削除したものになる。これを変数 F にセットし直す--- set F=!F:M01=! rem ---抽出したファイルのフルパス (%~f変数) を 文字列 M01 を削除してセットした変数 !F! に拡張子 (%~x変数)を付け足してリネーム--- ren %%~fi !F!%%~xi ) |
対象ディレクトリまでのパスを「c:\mp4data」へ変更してみる
setlocal enabledelayedexpansion for %%i in (c:\mp4data\*M01.xml) do ( set F=%%~ni set F=!F:M01=! ren %%~fi !F!%%~xi ) |
Windowsコマンドプロンプトで、指定拡張子のファイル名の一部(固定文字列)を
複数サブフォルダ内にある指定拡張子ファイルを、指定フォルダへ移動
「currentディレクトリ」内の「任意階層下にある指定ディレクトリ」あるいは「任意階層下にある指定ディレクトリ内にある全ファイル」をバッチファイルで一括処理する