未分類

文字列置き換えのバッチを作成してみる

更新日:

自動でSVNにコミットするteraterm macroを作成したのですが、そのマクロのユーザ名とパスワードの初期設定をバッチでやってみたかったので作成しました。

まぁ、テキストエディタで開いて書き込めばいいだけなので、無駄なんですけどね。

 

コードはこんな感じです。

 

echo off
echo 初期設定を行います。
rem 初期化
set SVN_USR=
set SVN_PASSWD=
rem 入力要求
set /P SVN_USR="SVNのユーザ名: "
set /P SVN_PASSWD="SVNのパスワード: "
rem 入力値echo
echo ユーザ名は %SVN_USR% です
echo パスワードは %SVN_PASSWD% です
echo 問題がなければ、ファイル作成処理を開始します。よろしいですか? 
choice
if errorlevel 2 goto :no
if errorlevel 1 goto :yes
 
:no
echo 実行を中止します。
echo 処理中止
pause
exit /b
 
:yes
if EXIST ..\macro\deploy.ttl del ..\macro\deploy.ttl
echo ファイルを作成します。
	setlocal enabledelayedexpansion
	for /f "delims=" %%A in (.conf\default_deploy.ttl) do (
	    set line0=%%A
	    set line1=!line0:_svnuser_=%SVN_USR%!
	    set line2=!line1:_svnpassword_=%SVN_PASSWD%!
	    echo !line2!>>..\macro\deploy.ttl
	    )
	endlocal
pause

 

基本的には、よくある文字列の置き換えテンプレートとyesnoのメッセージによる分岐を組み合わせただけの処理です。

default.ttlというデフォルトのマクロを隠しフォルダ内に置き、

それを参照し、そのファイル内の「_svnuser_」「_svnpasswd_」を

入力された情報で置き換えるという処理です。

 

ただこれ、実は正しく動作していないです。笑

というのも、文字列内に「!」が含まれていた場合に、特殊文字と判断して消してしまうようで、エスケープしてもダメ。

他の方法を色々試してみましたが、バッチの限界を感じてしまいました。

 

どうしても、「!」マークの文字を使用した文字列の置き換えをしたい場合には、wshを使用すれば問題なく置き換えることができます。

また、バッチの中にwshを混ぜた書き方もできるので、次の記事で実際に書いたコードを載せようと思います。

 

【文字列置換え】バッチだと不具合がでるので、WSHで対応してみる

-未分類

Copyright© エンジニアの階段 , 2019 All Rights Reserved Powered by STINGER.