• 締切済み

コマンドプロンプトでバッチをつくりたいです

こんにちは。コマンドプロンプト初心者です。 一通り調べたのですが諸事情により時間がないため、 ご存知の方、どうが教えてください。 ファイルをある特定のフォルダ下にコピーするのですが、 パラメータによってコピー元のファイルを変えたいです。 引数を渡すことができません。 ---------------------------------------------- 【コード】 IF %1%=="" GOTO ERROR IF %1%==1 GOTO 処理1 IF %1%==2 GOTO 処理2 :処理1 CD C:処理1 COPY C:処理1\parm.txt C:コピー先フォルダ :処理2 CD C:処理2 COPY C:処理2\parm.txt C:コピー先フォルダ :ERROR ---------------------------------------------- 実は、一番やりたい事は、バッチファイル起動時に ダイアログボックスを表示し、そこにパラメータを入れて 渡すことができたら最高なのですが。 よろしくお願いいたします。

みんなの回答

  • K6A
  • ベストアンサー率35% (59/164)
回答No.6

この内容だとわざわざバッチを書かなくともcopyコマンドだけで済むのではないでしょうか? >実は、一番やりたい事は、バッチファイル起動時に >ダイアログボックスを表示し、そこにパラメータを入れて >渡すことができたら最高なのですが。 GUIで使いたいのならファイルコピー用のツールで用途に合ったものがありそうな気がしますし、PC操作に慣れた人だとエクスプローラで普通にコピーしてしまってもいいんじゃないかと・・・ http://www.vector.co.jp/vpack/filearea/winnt/util/file/copy/

  • auty
  • ベストアンサー率58% (284/486)
回答No.5

ディレクトリ名のみ(最初の\は入れません。)を起動時に入力することにして、とりあえず作って見ました。 cp2.BAT -------------------------------------------------------------------------------------- : : cp2.BAT       [使用法]  cp2 [ディレクトリ名のみ] : @echo off IF "%1"=="" GOTO :ERROR set S_PATH=C:\%1\parm.txt echo %S_PATH% if not exist %S_PATH% goto :ERROR2 COPY %S_PATH% 特定のフォルダ goto :END :ERROR echo [使用法] echo cp2 [ディレクトリ名のみ] goto :END :ERROR2 echo ディレクトリ名かファイルがありません goto :END :END -------------------------------------------------------------------------------------- 特定のフォルダの部分を変えてみてください。

回答No.4

バッチを起動した後に入力したい場合は SETコマンドを使って出来ます。(Windows XPの場合) 入力した値を変数Kに入れるサンプルです。 【コード】 :入力 SET /P K=1または2を入力> IF %K%==1 GOTO 処理1 IF %K%==2 GOTO 処理2 GOTO 入力

回答No.3

こんにちわ。 http://209.85.175.104/search?q=cache:94jydl41KKoJ:smdn.invisiblefulmoon.net/index.php%3FProgramming%252FTips%252FMS-DOS%25A5%25B3%25A5%25DE%25A5%25F3%25A5%25C9%25A5%25D7%25A5%25ED%25A5%25F3%25A5%25D7%25A5%25C8Tips+%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88+%E5%BC%95%E6%95%B0+%E5%85%A5%E5%8A%9B&hl=ja&ct=clnk&cd=8&gl=jp&lr=lang_ja リンク先アドレス永杉。この一番下辺り。 %1% じゃなく %1で良いのでは? あと、「処理1」ブロックの後に何もないとそのまま「処理2」に入ります。なのでそれぞれの最後に"GOTO OWARI"で 最後の行に「:OWARI」ラベルが必要です。 Win9x時代は"CHOICE"なるコマンドがあった模様ですが、今は無いですね。 バッチファイル起動時にパラメータとして渡すしかなさそうですね。

  • HIROs-NET
  • ベストアンサー率78% (15/19)
回答No.2

PowerShellを導入すれば可能です。 (この場合はPowerShellで動くバッチを作ることになります)

参考URL:
http://codezine.jp/a/article/aid/2067.aspx
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>実は、一番やりたい事は、バッチファイル起動時に >ダイアログボックスを表示し、(snip) CUIのバッチファイルでは無理です。GUIを使いたければWSHとかVBSとかvectorでバッチ用ユーティリティを探すとか・・   http://www.vector.co.jp/vpack/filearea/win/util/bat/

関連するQ&A

  • コマンドプロンプト copyができません

    こんにちわ。 コマンドプロンプトのcopyコマンドについて質問させていただきます。 下記(1)~(4)処理内容のバッチファイルを作成しました。 デスクトップにある転送データ.txtを(2)、(3)、(4)の各workフォルダへコピーする処理です. (2)、(3)には正常にコピーされますが、なぜか(4)だけコピーされません。 (1)cd C:\Documents and Settings\XXX\デスクトップ (2)copy 転送データ.txt D:\work (3)copy 転送データ.txt C:\work (4)copy 転送データ.txt C:\Documents and Settings\XXX\デスクトップ\work どなたかご教授いただけますでしょうか? 環境 WindowsXP SP3

  • バッチ処理について

    お世話になります。 バッチファイルを作成して、サーバー間でファイルのコピーを行おうと思ってます。 サーバーA:win2003server standerdEditon サーバーB:win2003server standerdEditon サーバーC:win2003server R2 standerdEditon(ServicePack1) A、Bからnet useコマンドでCをマウントしてます A→Cのコピーは大丈夫なのですが、 B→Cでは頻繁にnet useコマンドで失敗します。 サーバーBのバッチファイル if not exist P:\ net use P: \\serverC\test >> log.txt if %ERRORLEVEL% neq 0 echo エラー発生 ERRORLEVEL=%ERRORLEVEL% >> log.txt &goto END if ERRORLEVEL 0 echo 正常終了 >> log.txt のようにしているのですが、エラーなのに、 「エラー発生」がログに出ずに終了してます。 「正常終了」も 「エラー発生」もログに出ないということは、if文で評価されてないように 思うのですが、&gotoで次の処理を飛ばしているので、終了のログは出てます。 説明が不足しておりましたら追加させていただきますので、 なぜこの現象が発生するのかお知恵をお貸しいただければ幸いです。 よろしくお願いします。

  • バッチのcopy

    フロッピーのサブディレクトリへのファイルコピーで、コピー先のファイル名を指定しないと、コピー先ディレクトリが間違っているといわれます。 a:\tempは既存フォルダです。 @echo off copy C:\WINDOWS\デスクトップ\1.txt a:\ copy C:\WINDOWS\デスクトップ\2.txt a:\temp\ これでは2.txtがコピーできないので copy C:\WINDOWS\デスクトップ\2.txt a:\temp\2.txt のようにしなくてはなりません。 コピー先のファイル名を指定せずにコピーする方法がありましたら教えてください。

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

    以下のバッチファイルを作成して実行したのですが、PATH_NAMEの変数が 設定されず、ファイルコピーがされません。 どのように、コードを記載すれば良いのでしょうか。 ご教授願います。 REM コピーするファイル数を設定 SET /a FILE_NUM = 2 REM コピー元のパスを設定 SET PATH_P1=C:\Copy01.txt SET PATH_P2=C:\SAMPLE\Copy02.txt REM 上記で設定したファイルを順番にC:\TEST\へコピーする SET /a N=1 :LOOP SET /p PATH_NAME = PATH_P%N% copy %PATH_NAME% C:\TEST\ if "%N%"== "FILE_NUM " (goto EXIT) SET /a N=N+1 goto LOOP :EXIT

  • コマンドプロンプトのバッチについて

    test01.bat >> YYMMDD結果.txt コマンドプロンプトのバッチ処理を実行結果をテキストで保存したいのですが、ファイル名を、 「YYMMDD結果.txt」と"YYMMDD"に本日の日にちを入れたいのですが、どのようにすればよいのでしょうか?

  • コマンドプロンプトのコピー関数について

    コマンドプロンプトのcopyのファイル名を記述する部分にファイルのフルパスを使用してみたのですが、「指定されたファイルが見つかりません」となってしまいますが、copyではフルパスは使用できないのでしょうか? エラーになるのは以下のように記述したコマンドです。(a.txtをb.txtにコピー) copy C:\Documents and Settings\a.txt C:\Documents and Settings\b.txt よろしくお願いします。

  • DOS バッチファイルコマンド記述について

    DOSのバッチファイルを利用してコマンドを記述したバッチファイルを作り、 ドロップしたファイルのバイト数を見て1000バイト以上あったら指定のフォルダに 移動させたいと考えています。素人ながらに以下のファイルを作ってみたのですが うまく動いてくれません。添削して頂けると助かります。よろしくお願いします。 :start if %1""=="" goto end if "%~z1" gtr 1000 move "%1" C:\bk shift goto start :end

  • コマンドプロンプトでわからないことがあります

    例えばtxtファイルをドロップするとある動作をするバッチファイルAがあります。 特定のアドレスにあるtxtをドロップせずにAの操作を実行出来るバッチファイルBを、 Aのバッチを呼び出す形で作りたいです。 パッチファイルBを下のような感じで書いてみました。 ---------------------------------------- set BAT=Aのbatファイルのパス set TXT=C:\*.txt call %BAT% %TXT% ---------------------------------------- これでC直下にある全てtxtはAのバッチファイルである動作をするだろうと思ったのですが、 Aバッチファイルには『C:\*.txt』とそのまま読み込まれてしまいました。 *がワイルドカードとして使われていない感じです。 なぜでしょう?どうしたらいいでしょうか。

  • ドライブのエラー

    WIN2KでFDやMOに自動でCOPYするバッチファイルを 作ったのですが、ディスク自体が壊れていて 書き込みエラーなどになって処理がとまって しまう事があります。 エラーが発生してもそのコピー処理自体をスキップして バッチ処理が止まらないようにする方法はないでしょうか? 因みにこんなバッチ書いてます。 chkdsk > chkdsk ---- ここでエラーが発生すると止まってしまう。 if errorlevel1 goto end ---- このやり方で他の条件は?(ディスクが無いときにはコピーしない) copy c:\test\*.* e:\ :end

  • バッチでテキスト内の一覧を検索・処理させてたい

    バッチでテキスト内の一覧を検索・処理させてたい ご質問させて頂きます。 バッチで、フォルダ内の情報をテキストに記述し この記述した内容を検索し、バッチ内で入力したファイル名と 一致させる、入力したファイル名が該当なし場合は、再検索させるたいと 考えています。 テキスト内に記述させたフォルダ情報を検索・(判別)させる方法は、 バッチでないでしょうか? 下記に、バッチを記述します。 ------------------------------------------ dir /w "D:\xxxx\ppp > c:\temp\test.txt :loop set /p failname="- ファイル名入力" ???????? (test.txtを判別) if %errorlevel% GTR 0 (goto non) ELSE goto syo :non echo %failname%はないようです。 goto lop :syo --バッチ処理-- 以上のような、記述を考えておりますが、 ???????? (test.txtを判別)の箇所がわからなく 教授頂けたら幸いです。 よろしくお願い致します。

専門家に質問してみよう