• 締切済み

バッチで自動的にディレクトリを作成するには。。

お疲れ様です。 質問なのですが、 サブバッチ(mkdir.bat)で set dwh=%1 set zensha=%2 とセットし、作業がこの先続くのですが、 メインバッチ(callmkdir.bat)のほうで、サブバッチを呼ぶ時に手動での変数(%1と%2に)の値を入力させるにはどうすればいいのでしょうか? メインのほうに、値を書いておく方法しかわからないので、値を入力すれば済むようにしておきたいのです。 promptを使うのかなって思うのですが、使い方がよくわかりません。 初心者なので質問がうまくなくて、すみません。よろしくお願いします。

みんなの回答

  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.3

>追加で、DDD 4444というパラメータを渡したい時に、 >追加でcall分を書くのではなくて、(call sub.bat DDD 4444を書くのでは >なく)パラメータだけを >入力すればいいバッチにしたいのです。 No.2のかたのリンク先にあるようにメインの方のバッチで set /p を使えば >dwhとzenshaを入力してください。のような感じにしたいです。 という目的はクリアできますが、 set /p dwh=dwhを入力してください: set /p zensha=zenshaを入力してください: とメインバッチに追加する手間で call sub.bat DDD 4444 って書けちゃいますね。 たとえば、sub.batのほうで set dwh=%1 set zensha=%2 if "%1"=="" set /p dwh=dwhを入力してください: if "%2"=="" set /p zensha=zenshaを入力してください: と書いておけば、メインの方は call sub.bat だけですみます。 ただしこの行は追加する必要があります。(何回sub.batを呼ぶかはしていしなきゃいけない)

  • geso775
  • ベストアンサー率29% (15/51)
回答No.2

#1です。 こちらだったでしょうか?・・

参考URL:
http://park1.wakwak.com/~ima/windows_tips0004.html
  • geso775
  • ベストアンサー率29% (15/51)
回答No.1

#質問が理解できてなかったらごめんなさい。 windowsのバッチでメインバッチからサブバッチを呼び出す時、引数をもたせたいんですよね? main.bat のなかで call sub.bat dwh zensya と記述してだめでしょうか?

martin7997
質問者

補足

ご返答ありがとうございます。 main.batのなかで call sub.bat dwh zensya と記述すれば、sub.batのほうで、dwh zenshaという引数を受け取って、作業は行われます。 最初の時はそれで、すべて記述して作ったのですが、 次回から、新規に追加する場合に、 そのdwh zenshaをプロンプトで入力できるようにしたいんです。 例えば、最初は、call sub.bat AAA 1111 call sub.bat BBB 2222 call sub.bat CCC 3333 という引数を渡して、作成しました。 sub.batのほうで、set dwh=%1 set zensha=%2 とセットしているので、%dwh% %zensha%にそれぞれが 渡されますよね。 追加で、DDD 4444というパラメータを渡したい時に、 追加でcall分を書くのではなくて、(call sub.bat DDD 4444を書くのではなく)パラメータだけを 入力すればいいバッチにしたいのです。 dwhとzenshaを入力してください。のような感じにしたいです。 わかりにくかったり、変に難しく考えてしまっているのかもしれません。。 わかりましたら、ご返答お願いいたします。

関連するQ&A

  • 子バッチの変数を親バッチで取得したい

    行き詰まりましてぜひともみなさんの知恵をお借りしたいです。 現在a.bat(親)と b.bat(子)があります。a.bat で call b.bat して b.batである処理の結果(文字列)を変数Palaにセットしました。 ここでこのb.batのなかの変数Palaの値をa.bat(親)で取得したいですが なにかいい方法がありますか?TEMPファイルへ書き込んでからa.bat(親)終了時に削除する方法以外でおねがいします。 以下はバッチファイルの一部分です。 a.bat(親) ---------------- call b.bat --------------- b.bat(子) *************** FOR /F "tokens=1" ・・・・・・・ "%1" temp.txt') do set Pala=%%l (%Pala%はいつも値は存在する。 この%Pala%をa.batで使いたいですが取得方法がわかりません) ***************

  • バッチからファイル作成をするときに困っています

    リダイレクトで、バッチからファイルを作っています。 部分的ですが、元のバッチは下記のようなバッチです。 ECHO SET /P U-ID="社員番号:" >AA.BAT ECHO net user %U-ID% >>AA.BAT できたファイルで、社員番号をユーザに入力させ、net user で表示させるものです。 ただ、これを実行すると、下記のようなファイル内容になってしまいます。 SET /P U-ID="社員番号:" >AA.BAT net user >>AA.BAT (%U-ID%の部分が消えてしまう) これを回避し、作成したファイル内容が SET /P U-ID="社員番号:" >AA.BAT net user %U-ID% >>AA.BAT となるようにする方法はありませんでしょうか? 知識不足で申し訳ないですが、回避策が見つかりませんでしたので、ご教授願えれば幸いです。 よろしくお願いします。

  • バッチファイル 戻り値

    いつも大変御世話になっております。 WindowsVISTA環境で以下バッチ【ABC.bat】が稼動します。 "ABC.bat"------------------------------------------------- @ECHO ON set bat_name="ABC.bat" call DEF.bat echo %bat_name% は戻り値 %ERRORLEVEL% を受け取りました。 "ABC.bat"------------------------------------------------- 上記バッチの構文では以下バッチDEF.batを起動させ、ERRORLEVELを取得させます。 "DEF.bat"------------------------------------------------- @ECHO ON set bat_name="DEF.bat" exit /b 10 "DEF.bat"------------------------------------------------- 実行結果は予想していたものと違っていました。 予想していた実行結果 : "ABC.bat" は戻り値 10 を受け取りました。 実際の実行結果     : "DEF.bat" は戻り値 10 を受け取りました。】 %ERRORLEVEL%のみを取得したかったのですが DEF.bat の set bat_name="DEF.bat" までも取得してしまいました。 bat_name はどうしても "ABC.bat"とCALLする側の変数を使用したいのですが 制御は難しいでしょうか? echo %bat_name% は戻り値 %ERRORLEVEL% を受け取りました。 の直前に 再度 set bat_name="ABC.bat" と記述しなければダメでしょうか? 尚、都合上、ECHO文と変数名は変えたくありません。 もしご存知の方がいらっしゃるようでしたら、お手数ですが 実現可能かどうかをご回答願いますでしょうか? 以上、何卒宜しくお願い致します。

  • FTPのバッチファイルで日付を引数で与えたい

    いつもお世話になっております。 FTPのバッチファイルに引数を与える良い方法をご存知ありませんか。 FTPの中では環境変数は使えないとのことですし、悩んでいます。 取得するファイルは日付毎のディレクトリに入っていて、取得後も日付毎のディレクトリに保管するので日付の指定が必要なのですが。 [ftpget.bat]------------------------------------------ ftp-s:ftpget.bat open ホスト名 ユーザー名 パスワード bin prompt cd /~対象ホストのディレクトリ~/YYYYMMDD/host1 !mkdir C:\YYYYMMDD lcd C:\YYYYMMDD mget *.txt quit ---------------------------------------------------- このYYYYMMDDの部分を、『ftpget.bat 20081125』のようにバッチを流す時の引数で与えたいです。 日付は3日前だったり昨日だったり今日だったりします。 今は直接ファイルを編集してYYYYMMDDの部分3箇所を手で直してからバッチファイルを叩いています。 よろしくお願いいたします。

  • バッチ処理でファイルの中身を変数に入れるやり方

    あるファイルの中には1行の文字列があります。 このファイルをバッチで読み取り、変数に設定したいです。 例: test.txt abcacbacbacbacbacbacbacbacb test,bat set DATA=[test.txtを読み込んだ値] よろしくお願い致します。

  • バッチファイルの変数引継ぎについて

    行き詰ってしまったので、どなたか知恵を授けていただければと思います。 現在、あるソフトウェアの「バッチモード」という機能を使用したバッチを作成していて、構文が > sdcmd batch ***.txt 上記のようにコマンドを羅列したテキストファイルを指定した実行コマンドになります。 sdcmd以降はソフト指定のコマンド以外は使用できず、変数設定ができない為に変数設定とログ保存を兼ねて上記コマンドを記載したバッチを > setlocal EnableDelayedExpansion > set ○=△△△ > set ■=◇◇◇ > call aaa.bat %* >> aaa.log 2>&1 という内容の呼び出しバッチを作成たのですが、テキストファイル内の変数が代入されずに 実行されてしまいます。 cmd上から直接 > setlocal EnableDelayedExpansion > set ○=△△△ > set ■=◇◇◇ > sdcmd batch ***.txt >> aaa.log 2>&1 を実行しても変数の代入は行われませんでした。 cmd上で変数とテキストファイル内のコマンドを手動実行すれば変数は解決できます。 設定した変数を、テキストファイル内の変数値に代入する方法はあるでしょうか。

  • vbsからバッチファイル実行時の引数渡しについて

    vbsからバッチファイルを実行する時に、引数として変数を渡すことはできるでしょうか。バッチファイルは引数を受け取れる記述をしています。変数の値は常に変動します。 CreateObject("WScript.Shell").Run "C:\HULTOOL\test.bat",0 を使ってtest.batを実行しています。"C:\HULTOOL\test.bat aaa(aaa)は固定の数値ですという書き方で、バッチファイルがaaaを第一引数として受け取れることは試してできました。しかし、aaaを変数にすると成功しません。何かよい記述方法はあるのでしょうか。ご教授ください。

  • バッチとVBSについて

    VBSのinputboxで入力した値をバッチの変数として渡したいのですが、双方のプログラム内容をどのように書いたら良いのやら… すみませんが、ご教示下さい。

  • バッチファイルについて

    バッチファイルについて バッチファイルの勉強をしておりますが、以下のバッチで 分からない箇所があります。 @echo off copy C:\bin\set.txt set.txt | find /v "コピー" echo ユーザー名を入力してください echo 入力後、Ctrlキーを押しながらZキーを押した後、Enterキー copy con inp.txt | find /v "コピー" copy set.txt+inp.txt setinp.bat | find "○○" call setinp.bat echo ユーザー名は%INP%と入力されました! del setinp.bat set.txt inp.txt <<不明箇所>> まず、C:\bin\set.txt』は set INP= とだけ書いたファイルです。 copy C:\bin\set.txt set.txt | find /v "コピー" ですが、|find /v"コピー"はなんのためにやっているのでしょうか?? find /vを調べてみると、指定した文字列を含まない行の内容をすべて画面に表示します。 と記載されていますが・・・・このバッチでは一体なぜ最初にいるのでしょう?? copy con inp.txt | find /v "コピー" ですが、コンソールから入力させた文字列をinp.txtに保存しているらしいのですが、 そのあとに、また、|find /v"コピー"がでてきますが、なぜでしょう??なにを したいのでしょう?? さらにまた、copy set.txt+inp.txt setinp.bat | find "○○"が出てきますが、 ここでなぜまた意味不明な、|find"○○"がでてくるのでしょう?? さらにさらに、バッチを実行してみると、set.txtの中身にはコンソールから 入力した文字は何も記載されていない、そして、inp.txtやsetinp.txtという テキストファイルも、どのフォルダにも出来ていません。 最後の行のdel setinp.bat set.txt inp.txtを消して実行してみても同じです。 なぜでしょう?? このバッチの動き、例としての意図が全く分かりません。。。。 この例題が悪すぎるのか、私の頭がわるすぎるのか・・・・ ちなみに、上記バッチは、http://www.geocities.co.jp/SiliconValley-SanJose/1227/batinput.html のサイトのものです。 どなたかご教授願います。。。一週間悩みましたが、まったく理解できない状態です。。。

  • テキストファイルの値をバッチファイルの中の関数に代入する方法をご指導して頂けないでしょうか?

     初めまして、最近バッチファイルの勉強をしているのですが、テキストファイルの値をバッチファイルの中の変数に代入する事は可能なのでしょうか?  私が今考えているのはテキストファイルの中の値をバッチファイルの中の変数に代入するというものです。 例 --test.txt-- 2009 11 27 ---------- --test.bat-- FOR /L %%i IN (1,1,10) DO CALL SUB.BAT year month day ---------- 上の例のテキストファイルの値、2009をバッチファイルのyearに代入という事は出来るのでしょうか? もし可能であればtest.batにどのような事を書けばいいのでしょうか? ご指導のほどをよろしくお願い致します。

専門家に質問してみよう