• ベストアンサー

コマンドプロンプト(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処理側の変数として使うことはできないのでしょうか? 変な質問かとは思いますが、ご教授お願い致します。

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

  • ベストアンサー
noname#140971
noname#140971
回答No.2

set list= for %%i in (aaa iii aiu kkk) do mkdir %list%%%i これでいけます。

dokkiricha
質問者

お礼

回答有難うございます。 いけました!!! FOR %変数 IN (セット) DO コマンド はこのように使うのですね。勉強になります。

その他の回答 (1)

回答No.1

変数 aaa1 は %aaa1% で参照できますが、この % と % の間に % や %% を入れることはできません。 %aaa%%B% は %aaa% と%B% の連結と解釈されてしまいます。

dokkiricha
質問者

お礼

回答有難うございます。 >% と % の間に % や %% を入れることはできません やはりそうですか。上記のような記述はせず、別の方法で考えます。

関連するQ&A

  • コマンドプロンプトで.batファイルを作っています。

    古いバックアップディレクトリを削除するバッチファイルを作りたいです。 cd /d e:\fileDir REM:【最終のディレクトリを削除】 for /F %F in ('dir /b /o:-d') do set fname=%F rmdir /s /q %fname%  をコマンドプロンプト画面に貼り付ければ上手く動作しますが*.batと名前を付けて保存したものをダブルクリックでは全く動作しません。  コマンドプロンプト上で実行するのとバッチファイルで実行することの違いについて調べてみましたがなかなか動作するものになりません。  どなたかご教示いただけないでしょうか    

  • ファイル移動処理(コマンドプロンプト 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 )

  • コマンドプロンプトでファイル読み込み

    For文を使って、パラメータファイルから値を読み込みたいのですが、 "C:\Documents and Settings\~"等(パスにスペースが含まれる場合)に置かれた場合、 ファイルを読み込んでくれず困っております。 ()内のファイル指定で、""(ダブルクォーテーション) や'(シングルクォーテーション)で囲むこともしてみましたが、ダメでした。。 どう指定すればよいのかご教授下さい。 よろしくお願いいたします。 【パラメータファイル(tmp.txt)】 ABC=12345 【バッチファイル(test.bat)】 for /F "delims== tokens=1,2" %%A in (D:\tmp.txt) do if %%A==ABC set value_1=%%B echo %value_1% pause

  • コマンドプロンプトの繰り返し処理について

    コマンドプロンプト初心者です。 今回、同じファイルをWebサーバー上の複数のフォルダにアップロードするバッチを組みたいのですが、「for」による繰り返し処理がうまくできません。 さらに具体的にいいますと「public_html/10」「public_html/11」「public_html/12」「public_html/13」それぞれに「AAA」というフォルダを作り、その中に「BBB.txt」というファイルをアップロードしたいのです。 なお、「public_html/10」に「AAA」というフォルダを作り、その中に「BBB.txt」というファイルをアップロードをおこなう、という一度だけの処理はできています。ですが、forを使い、繰り返し作業をおこなおうと試みるも、うまくいきません。 以下が作成したFTPコマンドです。 ------------------------------ open XXX.XX.XX.XX name password For /L %%a in(10,1,13) do ( cd /public_html/%%a mkdir AAA cd /public_html/%%a/AAA put C:\BBB.txt BBB.txt) EXIT       ------------------------------ お手数ですが、ご教授いただけますと幸いです。 よろしくお願いいたします。

  • forコマンドで属性が隠しファイルを表示するためには?

    forコマンドで属性が隠しファイルを表示するためには? 下記のような、batファイルでファイルをリストアップすると、 属性が隠しファイル、もしくはシステムファイル等がListUp表示されません。 如何なるファイルでもListUp表示できるようにする方法を教えてください。 xyz.bat @echo off for %%i in (*.*) do echo %%i >> test.txt @echo on @echo 完了 pause

  • バッチコマンドの for文の使い方。

    以下のバッチファイルはテキストを一行ずつ3つの変数に読み込み <subtest.bat>の処理を行うものです。 この2つのバッチファイルを一つにまとめたいのですがどうすればいいでしょうか。ただし、<subtest.bat>内は実際には10行程度の文です。 goto文を使用してみよとしたのですがうまくいきませんでした。 どなたかわかる方がいらっしゃいましたら、教えていただけないでしょうか、お願いいたします。 ------------------------------------------------ rem <test.bat> @echo off for /F "usebackq tokens=1-3" %%a in ( file.txt ) do call subtest.bat %%c,%%b,%%a PAUSE exit -------------------------------------------------- rem <subtest.bat> rem 変数の表示 rem 実際には10行程度の文です。 @echo %3, %2, %1 -------------------------------------------------- <file.txt>の内容(タブ区切り) shin0.bmp1000 200 shin1.bmp 700 200 shin2.bmp 800 200 shin3.bmp 860 200 shin4.bmp 400 200 --------------------------------------------------

  • コマンドプロンプトのcallと遅延展開

    こんにちは。 コマンドプロンプトにおいて、call と !・・・! による環境変数の遅延展開について、 1つ疑問に思う事がありましたので、質問させて頂きました。 まず、以下のようなバッチスクリプトtest.batを作成しました。 -------------------------------------------------------- @echo off setlocal setlocal enabledelayedexpansion set aaa=XXX^|cat echo 1:!aaa! call echo 2:!aaa! echo 3:%aaa% call echo 4:%aaa% --------------------------------------------------------- これを実行した結果、以下のようになりました。 --------------------------------------------------------- C:\Users\kei >test.bat 1:XXX|cat 3:XXX 4:XXX --------------------------------------------------------- callは、それ以降のコマンドラインを2度解析するだけなのに、 なぜ、call echo 2:!aaa! の行を実行した時に、何も出力されないのでしょうか?

  • バッチファイル(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と上には書いてあります。 よろしくお願いします。

  • Batファイルでxcopyを実行するとループする

    BatファイルでCドライブのaaaフォルダからDドライブのaaaフォルダへファイルをコピーするxcopyの記述をしました。 xcopy c:\aaa d:\aaa /i 作成したBatファイルを実行するとループしてるのか、このコマンドが何度も繰り返され、コマンドプロンプトの×ボタンを押すまで終わりません。 コマンドプロンプトから直接xcopyを入力すると問題なくコピーされます。 どこか私の記述が間違っているのでしょうか?

  • batファイル実行後コマンドプロンプト消さない方法

    batファイルをダブルクリックして コマンドプロンプト上で処理を実行した場合、 終了後にコマンドプロンプト画面がすぐ消えますが、 消さない方法はありますでしょうか。