• ベストアンサー

バッチファイルで大量の引数が処理できない

バッチファイルで大量のファイル(具体的には28個以上)を処理しようとすると 「指定されたデバイス・パス、またはファイルにアクセスできません。アクセス許可がない可能性があります。」 とエラーログが表示され、処理が行われません。 (shiftコマンドで引数(ファイル)を一つずつリネームしていく処理を行っております。) 管理者権限のアカウントでの操作ですし、同じファイルをひとつ、もしくは~27個処理した場合は問題ありません。 28個以上の大量の引数を利用した処理を行う方法をご存じの方がいましたら、ぜひご教授下さい。

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

  • ベストアンサー
  • dr-9
  • ベストアンサー率47% (24/51)
回答No.1

引数が28で限界で有れば、テキストファイルを利用してみたらどうでしょうか? 例えば、c:\tmp\file.txtに複数ファイル名を書き、このファイルを引数の代わりに使用すれば、28個以上も可能になります。

miki98
質問者

お礼

できました!ありがとうございます。 実は一度同じ方法を試してみていたんですがforコマンドの仕様をよく理解できておらず、この方法は諦めかけていました。 もう一度よくしっかりと調べ直したところ、今度は思い通りに動かすことができました。 貴方様のおかげです。心から感謝いたします。

関連するQ&A

  • バッチファイルを起動したけど、win98では引数が長すぎて。。。

    VBからバッチファイルを起動する処理を作成中です。 SHELL コマンドで実行しているのですが、 そのバッチファイルの引数がすごく長いのです。 >batch.bat "引数1" "引数2" "引数3" とする際、引数1 ~ 引数3までの合計文字列が 128?byte を超えてしまい、 win98では、使えないプログラムがあります。 複数の引数をまとめたファイルを、バッチファイルの 引数として起動させる等、 回避作はあるのでしょうか? 教えてください。

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

    バッチファイルのコマンドについて ウィンドウズです。 バッチファイルにて、大量のファイルの名前を以下の通りにリネームしたいです。 どのようにコマンドを組めばいいのか教えてください。 また、リネームしたファイルは1つ上のフォルダに移動させたいです。 1、ファイルの1~3文字目を削除してリネームして移動するコマンドデータ 2、ファイルの3~5文字目を削除してリネームして移動するコマンドデータ 例:『123456789』というファイル名に対して、 『456789』というファイル名にして移動するコマンドと 『126789』というファイル名にして移動するコマンドが欲しいです。 データは、名前も文字数もバラバラです。 知っている方がいたらお願いします。

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

    バッチファイルをを作成しています どうしてもわからないので教えてください。 なお、(1)だけは出来てます 以下、処理の流れ (1)ファイルのリネーム (2)リネームしたファイルの圧縮(ZIP形式) (3)圧縮したファイルにパスワードを付与する

  • バッチファイル

    お世話になります。 バッチファイルを用いて、実行されるプログラムがあります。 私の作成したものではないので、どのようなやり取りが内部で行われているのかは、詳細はわかりません。 例えば、D:\Programフォルダーの中にプルグラムをインストールしたとすれば、引数を2つ指定して(例:aaaとbbb)、バッチファイル(test.bat)を以下のように実行すれば、プログラムは正常に作動します。 D:\Program>test aaa bbb しかし、以下の場合には、正常に作動しません。 C:\>D:\Program>test aaa bbb つまり、パスを含めて、バッチファイルを実行することは、このプログラムは許可してくれません。 ここで、例えば、VBなどを用いて、テキストボックスなどで引数を二つ指定して、実行ボタンをクリックすれば、必ず、D:\Program>test aaa bbbという状態で、バッチファイルが実行されるようにするには、どのようにすればよろしいでしょうか? もしご存知の方がいらっしゃいましたら、是非、ご教授願います。 以上、宜しくお願いいたします。

  • バッチファイルで引数を二つ指定した場合の処理

    始めまして。今家でサーバーを立ち上げ、作業をスムーズにするためにバッチを作成しているのですが行き詰ったので助言いただけるとありがたいです。 今のバッチの中身は mkdir %1\%2 という風になっております。 コマンドプロンプトで引数を二つとも指定してやると正常に動きます。 ですがその手間を低減したいので、バッチへのショートカットを C:\Documents and Settings\Administrator\SendTo に入れ、右クリック→送るで使えるようにしました。 しかし、その場合、フォルダ上での右クリック→送るでは そのディレクトリが引数%1に当てはまるだけで %2は空白として処理されますよね? この%2が空白であれば(判定はifでするつもりです)、プロンプトの実行を一時止め、%2の値を入力を促す、というような流れになってほしいのですが可能でしょうか? まだまだ勉強不足で申し訳ないのですが、回答いただけると幸いです。また、説明不足な点がありましたら答えていきたいと思いますので、ご協力いただけるとありがたいです。

  • バッチファイルから直接db2コマンドに引数を持たせて実行したい

    バッチファイルより、得たデータを引数としてdb2コマンドに私、実行したいのですが、そのようなことはできるでしょうか。 (詳細) バッチファイルで、日付&時間を変数に格納します。これを、db2のテーブルにインポートしたい。 稚拙な質問で申し訳ありません。

  • C#で書かれたプログラムをバッチ処理

    C#で書かれたプログラムをバッチ処理を行いたいのですが,方法があまり良く分かりません. まずC#で書かれたプログラムを起動すると, 処理したいファイル名を入力するテキストボックススと, パラメータを入力するテキストボックスが表示されて, ボタンを押すと処理が始まります. 処理したいファイルが数百あるので,バッチ処理でできないものかと考えているのですが, どのようにC#のプログラムに引数を渡して処理させればいいのか分かりません. 理想としては,コマンドプロンプトから,各種値が入ったテキストファイルなんかを読み込ませて処理できればよいのですが... 十分伝えきれているのか不安ですが,宜しくお願い致します.

  • バッチファイルからSQLファイルへ引数を渡したい!

    こんばんは。 質問があります。 バッチファイル(.bat)を実行させてトランザクトSQL(SQL Server2005)の処理を行いたいのですが、その際に ・引数を渡す ・戻り値を返す 上記の二つのことって出来るんでしょうか? 自分なりに色々調べてはいるのですがどうしてもわかりません。。 もしどなたかご存知の方がいらっしゃったらぜひ教えてください。 分かりやすいサイトとかも助かります。 どうぞよろしくお願いいたします。

  • バッチファイルでファイル名をリネームのコマンド

    お世話になります。 バッチファイルのコマンドについて質問させていただきます。 【やりたいこと】 AAA.batというバッチファイルと”MU_日付.txt”というテキストがあります。 このテキストの日付部分は毎回変わります。例)MU_111226.txt このバッチファイルとMU_日付.txtは同じ階層にあります。 まず、このAAA.batをクリックしたら、この”MU_111226.txt” を ”読み込み.txt” という名前にリネームします。このリネーム処理の時、テキスト名が”MU”で始まるファイル以外は対象にしないようにしたいのです。 次にある処理を行って、その処理が済んだら”読み込み.txt”を”END_MU_111226.txt”といった元のファイル名に”END_”を付けた形でリネームして、同じ階層にある「処理済み」フォルダへ移動させたいのです。 ”END_” + ”元のファイル名”が無理であれば、”MU_111226.txt”を「処理済み」フォルダへ移動させるだけでも構いません。 このような処理は可能でしょうか? どなたかご教授いただけますでしょうか。よろしくお願い致します。

  • バッチファイル処理

    バッチファイルの処理の処理速度についてどなたか教えてください。 ある同一のコマンドをよびだすのに、バッチファイル単体で実行する場合と、プログラムからCreateProcessで呼び出す場合の処理速度を比較したのですが、だいぶ異なります。 プログラムで呼び出したいのですが、処理速度が遅くて使いものにならないため、速度UPをしたいのですが、この違いはなにが原因でしょうか。 計測方法は以下です。 ●バッチファイル単体→バッチファイルの中で計測(1秒程度でおわる) ●プログラムからCreateProcessで呼び出し→WaitForSingleObjectでプロセスが終了するまでの時間を計測(10秒ぐらいかかる) それぞれのバッチファイルの中身は以下のとおりです。 (2つのVSSコマンドをコマンドラインから実行するものです) ●バッチファイル単体 ...省略 set time1=%TIME::=% set time1=%time1:~0,10% echo Start %time1% >> %fileLog% 2>&1 ss cp %project% -YAA,BB >> %fileLog% 2>&1 ss add %folder%\%fileAdd% -YAA,BB -I- >> %fileLog% 2>&1 set time2=%TIME::=% set time2=%time2:~0,10% echo End %time2% >> %fileLog% 2>&1 ●プログラムからCreateProcessで呼び出しているbatファイル ss cp $/test/ -YAA,BB ss add C:\Test\test.dat -YAA,BB -I- 2> C:\Temp\ErrorAdd.txt