質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

1回答

76閲覧

bat処理において宣言した変数を、文字切り出しに使用したい。

assemble

総合スコア5

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2024/11/15 08:07

実現したいこと

%%でくくられている構文中で変数を使用したいです。
わかりにくい表現で申し訳ないのですが、具体例を用いて説明します。
ソースコードのように変数numを使用して文字の切り出しを行いたいと考えています。
結果としては以下のようなものを表示できるようにしたいです。
A
AB
ABC

発生している問題・分からないこと

文字列切り出しの構文中(%%の中)で変数を使用したいのですが、構文的にエラーとみなされ求めている結果の表示ができません。
どのような記述を行えば%%の中で変数を使用できるのでしょうか。

該当のソースコード

@echo off setlocal enabledelayedexpansion set str=ABCDE for /l %%i in (1,1,3) do ( set num=%%i set str_change=%str:~0,num% echo !str_change! )

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

numを%や!でくくったり、直接%%iを記述したりしましたが、いずれもうまくいきませんでした。

補足

windowsのコマンドプロンプトにて作業を行っています。
ソースコードで今回の質問事項以外に間違いがあるかもしれません。
有識者の方々のお力を貸していただきたいと思います、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

enabledelayedexpansionと書いているとい事は、遅延環境変数展開についての説明を読んだと言うことだと思いますが、意味が分からなかったということですかね?サンプルプログラムを実行してみたりすれば良かったと思いますが。

%変数名%の展開は、for文の開始前に行われます。
forの中で、変数名をその文の実行の都度、値に展開したい場合は!変数名!を使います。
このあたりの説明は、set /?setコマンドのヘルプ)を実行すれば表示されます。

CMD

1setlocal enabledelayedexpansion 2set str=ABCDE 3 4for /l %%i in (1,1,3) do ( 5 set str_change=!str:~0,%%i! 6 echo !str_change! 7)

投稿2024/11/15 12:54

otn

総合スコア85766

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問