はじめに
いつもお世話になっております。
今回私がbat作成をした際に学んだことなどを書き留めていきたいと思います。
初心者ということもありますが、書かせていただきたいと思います。
宜しくお願い致します。
作成の発端は?
ファイルの名前の一部だけ変更したいときに
F2を押して打ち込むという作業にめんどくさく効率よくしようとしました!
少ない数ならまだいいのですが何十個もあったので勉強がてらやってみました。
ソースコード
今回作成したbatのソースはこちら!
@echo off
:LOOP
echo "ファイルのコピーとリネームを開始します。"
echo "リネームしたいファイルをD&Dしてください。"
SETLOCAL ENABLEDELAYEDEXPANSION
set BODY_LIST=[変換したい文字列が記載されている].csv
set ORIGINAL_FILE_PATH=
set /P ORIGINAL_FILE_PATH="D&D sorce file!"
call :SET_CHANGE_WORD_FIND %ORIGINAL_FILE_PATH%
:SET_CHANGE_WORD_FIND
set FILE_NAME=%~n1
for /f "tokens=1 delims=," %%i in (%BODY_LIST%) do (
echo 検索文字列 %%i
set TEMP_STR=%%i
echo "%FILE_NAME%" | find "!TEMP_STR!" >NUL
if not ERRORLEVEL 1 (set CHANGE_WORD=%%i) else (echo "")
)
call :GET_FILE_NAME %ORIGINAL_FILE_PATH%
:GET_FILE_NAME
set ORIGIN_FILE_NAME=%~nx1
echo リネーム対象のFileName=%ORIGIN_FILE_NAME%
echo 変換対象文字列=%CHANGE_WORD%
set /P ANSWER="コピーを実行します。コピーしたいファイル名は正しいですか?(y/n)"
if /i {%ANSWER%}=={y} (goto :yes)
EXIT
苦労したこと
高級な言語しか触ってこなかったツケか
かこうとしてもチンプンカンプンでした
…Try&Errorでなんとか完成までこじつけました。
今回メモ帳で作成していたので、実行できなかったときに何がいけないか探すのに少し苦労しました。
あとは変数の使い方とfor文の使い方(つまり全部)
作成して気づいたこと
ファイルパスを読み込むときに
&があると正常にパスを読み込んでくれないんだなというのがわかりました…(失敗した)
最後に
あまりこういった記事を書いたことありませんでしたが、アウトプットの練習がてら書いてみました。
これからもこれは勉強になったなと思ったことなどはどんどん記事にしていきたいと思います!
稚拙な文章ですが、最後までご覧いただきありがとうございました。