ページ

2013年8月5日月曜日

バッチファイルで文字列からダブルクォーテーションを削除する。


バッチファイルで文字列からダブルクォーテーションを削除する。

バッチファイル制御を試みると、この問題にぶち当たることがあります。
例えばレジストリの内容を見て、プログラムフォルダを検索するなど、PATH名に空白がある場合は文字列がダブルクォーテーションで囲まれている。
そこにプログラムパラメーター等の文字列がさらに書き込まれている場合、for文で区切り文字処理がうまくできず、片方だけダブルクォーテーションが残ってしまってガックリ来たりします。
そうなると意外に面倒くさい。
ダブルクォーテーションが残ってしまった文字列をテキストファイルに吐き出して、そのテキストファイルから、ダブルクォーテーションを削除するバッチファイルを作成してみた。





@ECHO OFF
REM //////////////////////////////////////////////////////////////////
REM このBATファイルの説明
REM
REM ダブルクォーテーション「"」トリミングバッチファイル
REM
REM パラメーターで指定されたテキストファイル中のダブルクォーテーションをトリミングします。
REM
REM BATファイルのパラメータ
REM %1 対象テキストファイル名
REM //////////////////////////////////////////////////////////////////
if "%1"=="" goto end
set fname=%~1
copy %fname% org >nul
type nul >%fname%
for /f "delims=" %%a in ( org ) do (set line=%%a&& call :sub)

del /f org
goto end

:sub
set l=%line:"=%
>>%fname% echo %l%
goto :EOF

:end

0 件のコメント:

コメントを投稿