問題は環境変数xにありそうです。この問題が下記の記事で解説されていました。 バッチファイルのif文やfor文で気をつけること. 実はfor文、if文の中の環境変数は処理が終了後に格納した値が反映されます。これを環境変数の即時展開と言います。

ファイルパスからファイル名や拡張子を自由に取り出す でシェルについて書かれていたのでそのバッチファイル版 説明 %~I - すべての引用句 (") を削除して、I を展開します。 %~fI - %I を完全修飾パス名に展開します。 %~dI - %I をドライブ文字だけに展開します。 バッチ処理では、環境変数の展開が「行または()ブロックを読み取ったときに1回だけ」行われます。ご質問のようにforブロック内で環境変数を設定しても、それを展開する際は「読み取ったときに設定されていた内容」に置き換わります。 実行 … 本バッチファイルでは6列と見なして読み取っています。 for文で指定している変数Aは1列目の文字列が格納されます。2列目以降はB~Fの様にfor文で指定した変数に対してアルファベット順の変数名に格納 … Re:変数に格納された文字列の取得について )に似た内容があったのですが、 その方法だと第3トークン以降がまとめて一つの 変数に入ってしまうようでした(一つずつ取得 コマンド部分をかっこで囲むことで、複数のコマンドを実行できます。 for %変数 in (セット) do ( コマンド1 コマンド2 ) 複数の文字列. setコマンドはバッチファイルに必須のコマンドです。 そこで、setコマンドの豆知識的な機能を紹介します。 1.set /aに関して その数自身を計算するときは、簡単な書き方ができる。 set /a num = num + 1 set /a num += 1 上のふたつは同じ結果になります。 複数の計算は1行にまとめられる! …

下記のバッチファイルは、環境変数の一覧を表示する set コマンドの出力を FOR /F ループで一行ずつ処理しています。 デリミタを = と設定し、1 番目のフィールドを指定することによって、環境変数名だけを抽出しています。 vars.bat. バッチ内での変数使い方を教えてください。 どういうことをやりたいかと、いいますと、バッチの中で callで別のバッチを呼びます。別のバッチとはsetで変数に パスなどの値をいれています。元のバッチに戻ったときにその変数に 複数のコマンド. バッチファイルを実行すると変数 n に1から10までの数値を順に格納しながらコマンドを実行します。 指定した複数のファイル名の分だけ繰り返す . 環境変数lには maeato% という文字列が代入されてしまいます。 余談ですがバッチ実行時にどのように置き換えられるか見たい場合は、 バッチ先頭のecho offの行を取って実行するとよく分かります。 No.5 です。 >勝手に引用してしまってすみません。 下記のバッチファイルは、環境変数の一覧を表示する set コマンドの出力を FOR /F ループで一行ずつ処理しています。 デリミタを = と設定し、1 番目のフィールドを指定することによって、環境変数名だけを抽出しています。 vars.bat. @echo off FOR /F "delims== tokens=1" %%A IN ('set') DO echo %%A. Windowsのコマンドプロンプト(以下cmd)を利用することで効率よく作業を行なえる。batファイルにコマンドを記述して、バッチ処理を走らせたりして、便利ですよね。特に私の勤めています会社では、Windowsタスクスケジューラを利用して、ウェブサーバのデータを自動的に管理したりしています。 for /d /r 検索対象フォルダー名 %%変数名 in (検索対象フォルダー名) do echo %%変数名 環境変数ProgramFilesで示されるフォルダーの中からサブフォルダーも含めてlibという名称のフォルダーを検索する。 バッチファイル d:¥bat¥for_files¥4.bat 指定した複数のファイル名を順に変数に格納しながら繰り返しを行います。オプション無しの次の書式を使います。 for %%変数 in (セット) do for /d /r 検索対象フォルダー名 %%変数名 in (検索対象フォルダー名) do echo %%変数名 環境変数ProgramFilesで示されるフォルダーの中からサブフォルダーも含めてlibという名称のフォルダーを検索する。 バッチファイル d:¥bat¥for_files¥4.bat 実 … ``` for /f ["オプション文字列"] %変数 in ( 読み込みたいファイル名 ) do 実行するコマンド ``` オプション文字列としていろいろありますが、ここでは ``` tokens usebackq ``` を紹介します。 ・```tokens```について ``` hoge.txt 1 aaa 2 bbb ``` があるとします。このファイルの中身を表示することを考えます。 @echo off FOR /F "delims== tokens=1" %%A IN ('set') DO echo %%A.