• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:.batファイル作成 set コマンドの使い方)

.batファイル作成 set コマンドの使い方

このQ&Aのポイント
  • .batファイルで、setコマンドを使用して変数を登録する方法について教えてください。
  • .batファイル内で、出力結果を別の変数にセットする方法について教えてください。
  • .batファイルで、改行やスペースを含む長い文書を変数に登録する方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.1

例1. for /f "delims=" %%i in ('echo 私の名前は%name%です') do set body=%%i 上記の"for"文で、('echo 私の名前は%name%です')の実行結果(画面出力)が変数 %%i に入り、"do" 以降の "set body=%%i"が実行されます。 画面出力に半角スペースを含んでいる場合を考慮して、"delims="オプションで半角スペースを区切り文字として認識しないように指定しています。 例2. http://okwave.jp/qa/q5725995.html ↑のもう一つの質問と関連しているようなので、合わせての回答になります。 予め、テキストエディタの置換機能を利用して、テキストファイル文中の特殊文字(改行やスペース)を%文字コードの形式に置換しておきます。 例1.の"私の名前は無名です"が、bodyに既にセットされているとして、 for /f "usebackq delims=" %%i in ("C:\Documents and Settings\hogehoge\My Documents\hogehoge.txt") do set body=%body%%0d%0a%%i で、bodyに、 私の名前は無名です%0d%0a~~~~~~~~~~~(←hogehoge.txtの中身) がセットされます。 詳しくは、"for /?"でヘルプを参照してください。 また、環境変数 name、body の参照や"for"文中の変数 i 、特殊文字の文字コードを指定する"%"と、"%"がいくつも使われていますので、"%"の数にご注意ください。それぞれ、 %name% %body% %%i %0d%0a で一区切りの意味になります。

user010014
質問者

お礼

ありがとうございます! とても助かりました^^

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • batファイル コマンド

    batファイルでSetを使用して変数を代入してそれをechoでテキストファイルに記載させようとしているのですが、なぜか記載できていません。 何故でしょうか?回答よろしくお願いします。 (例) set TEST=SUCCESS echo %TEST% %COMPUTERNAME%>> "%~dp0%\TEST.txt" 作成されたTEST.txtを開くと 「KAISYA_PC」【※PC名】と入力されており変数TESTの値「SUCCESS」が 入っていません。

  • コマンドプロンプト(batファイル)のFORコマンド

    set aaa1=あああ set aaa2=いいい set aaa3=あいう set aaa4=かきく mkdir %aaa1% mkdir %aaa2% mkdir %aaa3% mkdir %aaa4% 上記のbatファイルをforコマンド(繰り返し処理)を使用してやってみたいです。 下記のbatファイルをつくってみたのですが、うまくいきません。 set aaa1=あああ set aaa2=いいい set aaa3=あいう set aaa4=かきく for /L %%B in (1,1,4) do mkdir %aaa%%B% pause %aaa%%B%のところが %aaa1%=>あああ や %aaa2%=>いいい になると思ったのですが... 文字列とforコマンドでの変数を組み合わせて、 DO処理側の変数として使うことはできないのでしょうか? 変な質問かとは思いますが、ご教授お願い致します。

  • BATファイルについて

    BATファイルについて教えてください。 現在エクセルのVBAでテキストファイルから読み込んだデータを一行づつ解析し条件文でそれぞれ決められた書式のテキストファイルに書き直して新たなテキストファイルを作成するというプログラムを作成して使っています。 この機能をエクセルのVBAではなくBATファイルのようなインタープリンターを介さないプログラムができないかと悩んでいます。 BATファイルで上記の処理が可能か、または作成方法など教えていただけると助かります。 どなたかご存知の方教えてください。

  • 古いフォルダーを削除するbatファイル

    batファイルでディレクトリのバックアップを行いました。 このバックアップを行うときに古いディレクトリを 削除するbatファイルを考えているのですがうまくいきません。 どなたかお知恵をお貸しください。 下記のように名前が付けられたディレクトリがあります。 090601 090602 090603 090604 このディレクトリの日付が古いディレクトリを削除するようにしたい。 (上記の場合090601が該当) 変数にディレクトリの090601を入れられるようなbatを作ればいいのでしょうが。 それが浮かびません。 どのようにしたらよろしいでしょうか??

  • WindowsDOSコマンドで次のBATファイル

    DOSコマンドです。ご教示願います。 DOSコマンドで以下のBATファイルを作成したいと考えています。 1.特定のフォルダ「D:\CSV」に以下の形式のファイルがあります。 ・HEAD_DATA_yyyymmdd.csv(yyyymmddは今日の日付西暦8桁) ・BODY_DATA_yyyymmdd.csv(yyyymmddは今日の日付西暦8桁) 2.上記の2つのファイルは「yyyymmdd」の部分が、システム日付を最大に、昨日、前々日と過去に遡った日付のファイルが複数存在します。「D:\CSV」に存在するファイル数は日によって違います。 3.「D:\CSV」に存在するファイルを日付の降順に1ファイル入力し(HEAD~と、BODY~の入力順は考慮しない)、そのファイルの中に存在するレコード(数百件あり)をDBにINSERTします(このDBへのINSERT処理部分はここでは「処理A」と置き換えることにします)。INSERTし終わったファイルは、「D:\CSV\BACKUP」に移動します。 4.上記「3.」をファイルがなくなるまで繰り返します。ただし、yyyymmddの降順に処理を行う必要があるので、「yyyymmdd - 1日」の順番で処理をします。「-1日」する際は、うるう年なども考慮する必要があります。 どのような記述にすればいいのか知識が乏しく。 どうかご教示をお願いいたします。

  • ファイル移動処理(コマンドプロンプト batファイル)

    ファイル移動処理(コマンドプロンプト batファイル) .batファイルでファイル名に日付がついたファイル(例:yyyymmdd_test.txt)の最新日付から2世代前のファイルまでをディレクトリに移動するような処理を記述したいのですが、やり方がわかりません。 例) 20100924_test.txt →移動対象外 20100925_test.txt →移動対象外 20100926_test.txt →移動対象 20100927_test.txt →移動対象 20100928_test.txt →移動対象 今、この下記の様に記述をしていますが意図した処理になりません。 どなたか助言を頂けないでしょうか? -------------------------------------------------------- mkdir temp set num=0 for %%f in (????????_test.txt) do ( set /a num+=1 if %num%==1 move %f% \temp\%f if %num%==2 move %f% \temp\%f if %num%==3 move %f% \temp\%f )

  • バッチファイル(batファイル)

    あることを自動化するために、あるサイトのバッチファイルをコピー&ペーストして使おうと思っています。 (自由に使用していいと表記してあります) しかし、使用されているプログラムがいくつか入手できなかったり、バッチファイルをいくつか繋げたらら上手くいかなかったりと、 色々と問題があり、自分で改変をしています。 初めてバッチファイルの中身を触ったような初心者なので、色々と試行錯誤しているのですが、行き詰ってしまいました。 上記のように初心者なので、言葉がおかしい所があったりするかもしれませんが、 回答よろしくお願いします。 本題です。 ファイルのドロップで処理を始めたいのですが、どうやらファイル名に半角の#が含まれていると途中でエラーが出るので、 処理の一番最初でファイル名の半角#を全角#に置き換えようとしたのですが上手くいきませんでした。(ファイル名の変更) なので新たなバッチファイル、"ドロップ用.bat"を作り、そこでファイルの置き換えを行ってから、callコマンドで 本命のバッチファイルaaa.batを呼び出そうとしました。 それでもうまくいかないため、質問させていただきました。 バッチファイルは一つのフォルダーにまとめていますが、ドロップするファイルは別のフォルダーにあります。 なお、ドロップするファイルのフルパスには、空白が含まれる可能性があります。 ドロップ用.bat--------------------------- @echo off setlocal set abc=%~n1 set def=%abc:#=#% ren "%~nx1" %def%%~x1 set ghi="%~dp1%def%%~x1" set jkl=%~dp0 call "%jkl%aaa.bat" "%ghi%" rem pause endlocal exit /b ----------------------------------------- ややこしくてまわりくどいバッチファイルですみません。 Windows7を使っています。 C:\windows\system32\cmd.exeと上には書いてあります。 よろしくお願いします。

  • "ROUTE"コマンドをBATで実行するには?

    こんにちは。 MS-DOSプロンプトでは、"ROUTE ADD ~"で複数あるルートを登録出来るのは承知しておりますが、そのコマンドをBATファイルに入力して実行しても、1行が繰り返し実行されるのはなぜでしょう? WIN98なので、オプション"-p"が使用できず、スタートアップにBATファイルとして組み込もうと思っているのですが。 別に良い方法があればそちらでも構いません。 宜しくお願いします。

  • bat ファイルの実行制御

    10台(例)A/B/C/D/E/F/G/H/I/J PCがありそのうちの5台A/B/C/D/Eはbatファイルの処理を途中までとしたいです。 batファイルを実行した際に実行しているPCの名前を確認して処理を続行or終了 したいのですが何か良い方法はないでしょうか? 例えばテキストファイル内にA~EのPC名を記載しておいてbatファイル実行時にはテキストファイルを確認して該当のPCじゃないか確認 等・・・

  • batファイルについて教えてください

    以下の要件を満たすbatファイルを作成したいと思います。 ・5区切りのCSVファルイを以下のように変数に代入する  読み込みファイル例 列 a , b , c , d , e 111,222,333,444,555 111,222,222,666,777 111,111,123,888,999 行全体を%%a、c列を%%c e列を%%eへ代入 a,b,c,d,e ⇒ %%a c ⇒ %%c e ⇒ %%e ・%%cに3を含むものを確認したい ・if文を使用に3を含むものを処理対象にしたい ・3を含むものに処理を行った後それぞれ以下のようにファイル書き出しを実施したい。     %%a ⇒ zenbun.txt %%c + %%e ⇒ bassui.txt ・処理終了 forやifを使うんだろうなぁ、、程度しかわからず全く詳細な構成がわかりません。 どなたか教えていただけませんでしょうか? よろしくお願いします。