Windowsバッチでテキストファイルから読み込んだデータの文字を一部変更して、ファイル出力を行うプログラムを作成しています。
流れとしては、起動.batを起動しファイル名を入力したあとに
test.batが起動しテキストファイルから読み込んだデータの文字を一部変更して、ファイル出力を行います。
その際、半角の()が含まれるファイル名を入力し実行したとき最後まで実行できない状態です。
この場合は、どのように対応したらよいのでしょうか?
ソースコードを張るので、アドバイスをいただきたいです。
下記のソースコードで、半角()がないファイル名を指定した場合に動くことは確認済みです。
ソースコード 起動.bat set /P fileName="変換を行いたいファイル名を入力してください:" call test.bat %fileName% pause test.bat echo off rem ********** 前処理 ********** rem 処理ステータスをゼロセット set status=0 set end_status=0 rem ファイル情報をゼロセット set IN_FILE=%1 set OUT_FILE=kb_%1 set before_string=51 set after_string=21 set b_dammyString=ダミー文字列1 set a_dammyString=ダミー文字列2 rem パス情報をセット set path=%~dp0 set work_path=%path%work set bk_path=%path%bk rem 文字コードをebcdicにする(今はコメントアウト) rem chcp 500 pause :STEP1 rem INファイルの1行読み込んで文字変換してファイル出力 for /f "delims= eol=" %%a in (%IN_FILE%) do ( set line=%%a echo !line:%before_string%=%after_string%!>>%OUT_FILE% GOTO :STEP2 ) :STEP2 rem INファイルを1行目をスキップして残りをファイル出力 for /f "skip=1 delims= eol=" %%a in ("%IN_FILE%") do ( set line=%%a echo !line:%b_dammyString%=%a_dammyString%!>>%OUT_FILE% ) pause IF NOT %ERRORLEVEL%==0 ( SET status=9 ) rem ステータス判定 IF %status% EQU 9 ( ECHO "ファイル変換でエラーが発生しました" SET end_status=9 GOTO :END ) pause rem 実行日の日付フォルダを作成 set foldername=%DATE:/=% mkdir %work_path%\%foldername% mkdir %bk_path%\%foldername% rem IN_FILE,OUT_FILEをそれぞれのフォルダに移動 move %IN_FILE% %bk_path%\%foldername% move %OUT_FILE% %work_path%\%foldername%\%fileName :END rem ********** 後処理 ********** rem スケジューラに返却コードを設定 SET status=%end_status% exit %status%
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/16 06:32