0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

初心者がbatファイルで特定箇所をリネームして複製してみた

Last updated at Posted at 2019-07-02

はじめに

いつもお世話になっております。
今回私が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文の使い方(つまり全部)

作成して気づいたこと

ファイルパスを読み込むときに
&があると正常にパスを読み込んでくれないんだなというのがわかりました…(失敗した)

最後に

あまりこういった記事を書いたことありませんでしたが、アウトプットの練習がてら書いてみました。
これからもこれは勉強になったなと思ったことなどはどんどん記事にしていきたいと思います!
稚拙な文章ですが、最後までご覧いただきありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?