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 1 year has passed since last update.

【Windowsバッチ】テキスト出力するサブルーチンへ渡す引数にスペースが含まれる場合の処理

Posted at

Windowsバッチで半角スペースが含まれる値を引数としてサブルーチンへ渡し、サブルーチン内でechoとテキスト出力を行うと、echoされる内容とテキストに出力される内容が異なる。

test_1.bat
@echo off
setlocal enabledelayedexpansion

set TestStr=test 1

call :OUTPUT_LOG1 "!TestStr!"

:OUTPUT_LOG1
echo %~1
echo %~1>> .¥output_1.txt
コンソール出力
test 1
output_1.txt
test

「 1」(半角スペース以降)はechoによる表示はされるがテキストには出力されない。
回避するには、サブルーチン内で引数を一度環境変数に代入する。

test_2.bat
@echo off
setlocal enabledelayedexpansion

set TestStr=test 2

call :OUTPUT_LOG2 "!TestStr!"

:OUTPUT_LOG2
set TmpStr=%~1
echo !TmpStr!
echo !TmpStr!>> .¥output_2.txt
コンソール出力
test 2
output_2.txt
test 2

サブルーチン内で引数の文字列置換をかけたい場合なども、一度環境変数に代入することで対応可能になる。

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?