目次一覧
状態:-
閲覧数:15,416
投稿日: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ディレクトリ」内の「任意階層下にある指定ディレクトリ」あるいは「任意階層下にある指定ディレクトリ内にある全ファイル」をバッチファイルで一括処理する