• 締切済み

Win7とWinXPでのバッチ引数について

いつもお世話になります。 この度仕事上で、壁に当たってしまいましたのでご質問させて頂きます。 WindowsXPで作られている、バッチからプログラム(引数あり)を実行する処理をWindows7に載せ替えているのですが、ここで動作の差異が発生しました。 Environment.CommandLineで引数を取得しているのですが、WindowsXPで実行すると、プログラムパスと引数との間の空白は、1ケタ分になりますが、全く同じプログラムをWindows7で実行すると、空白が2ケタとなります。 プログラム上は、半角スペースをsplitさせているので、引数を参照する添え字が変わってしまい、処理が正常に行われません。 皆様の中で、この様な経験をされた方、アドバイスをお願いします。 【言語】  VB2008 【テスト端末】  Windows7 SP1  WindowsXP SP2 ←ツッコまないでください^^; 【テストPG処理概要】  ・Environment.CommandLineにて引数を取得  ・split関数にて動的配列へ格納  ・配列全てをmsgboxへ表示 【動作結果】  ≪Windows7≫   ・Environment.CommandLine取得時     「C:\test.exe**ABC」 ※便宜上、半角スペースを*で表す   ・配列表示     添え字0:C:\test.exe     添え字1:     添え字2:ABC  ≪WindowsXP≫   ・Environment.CommandLine取得時     「C:\test.exe*ABC」 ※便宜上、半角スペースを*で表す   ・配列表示     添え字0:C:\test.exe     添え字1:ABC

みんなの回答

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

んーと、ただ単に > ・split関数にて動的配列へ格納 した直後に内容が空の要素を除去すればよさそうに見えるのですが、それでは何か問題があるのでしょうか。

yy8091
質問者

補足

今回プログラムは改造対象外の為、触ることができません。 どうしても実現不可なのであれば、客先に提案しますが、費用の面からしても、修正無しで対応したいと考えております。

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

関連するQ&A

  • C# Process.Startメソッドで複数引数を渡したい

    タイトルの通り、Process.Startメソッドで起動するアプリに複数2つ以上の引数を渡し、実行させたいのですが、方法がわかりません。 以下、サンプル1のように引数が1つならいいのですが、 サンプル2のように2つ以上の引数の場合、どうしたらよいでしょうか?ご存知の方、ご教授お願いいたします。 [サンプル1] Process.start(abc.exe, "c:\abc.txt") [サンプル2] Process.start(abc.exe, "c:\abc.txt", "c:\def.txt")

  • URLでEXEを呼出した際の、引数の渡し方

    URLでVBのEXEを呼出しているのですが、引数を どのように渡したらよいか分かりません。 <A href="c:\test.exe?test.htm" target="">TEST</A> ?の後ろを文字列パラメータとして渡したいのですが、 どのように記述すればよいのでしょうか? また、VB側では、どのように受取ればよろしいのでしょうか? 知っている方教えてください

  • 実行結果をコマンドライン引数として渡す方法について

    test1.cはコマンドラインから引数をとり処理するプログラム test2.cは「Hello!」と出力するプログラム。 これらのプログラムをコンパイルして、次のような引数の渡し方をしてHello!と表示したいのですがうまくいきません。 実際の結果 ----------------------------------------- $ ./test1.exe ./test2.exe ($はプロンプト) $ ./test2.exe $ ----------------------------------------- 期待する結果 ----------------------------------------- $ ./test1.exe ./test2.exe $ Hello! $ ----------------------------------------- ここでプログラムの仕様を示しておきます。 プログラム1(test1.c)の中身 -------------------------------------- #include <stdio.h> main(int argc, char *argv[]){ printf("%s\n", argv[1]); } -------------------------------------- プログラム2(test2.c)の中身 -------------------------------------- #include <stdio.h> main(){printf("Hello!\n");} -------------------------------------- よろしくお願いします!

  • 可変引数について。

    va_argを使う方法は知っているのですが、受け渡す引数の数を指定しない方法で、決まった型引数を任意数渡す方法はC言語(C++ではない)で実現できますか? char* test( n, str1, str2, str3, …任意数) nはint, str○ は const char* という形ならば、第二引数以降の引数を呼び出し元で n に与えてやれば、n回だけ va_arg(args, char*) を呼び出せばよいですが、 char* test2(str1, str2, str3, str4, …1つ以上の任意数) という形だと、引数の個数を取得できないためうまくできません。 実現不可能でしょうか?

  • 【エクセルVBA】Functionの引数として、配列は使えるのでしょうか?

    VBA初心者です。 Function で関数を定義するとき、その引数に配列を使う方法はあるのでしょうか? たとえば Function Test (C as double,n as integer) というFunctionの C に3×3の行列を入れたいのですが…。

  • VBのプログラムで、実行時に与えられた値の取得方法について

    VB初心者です。 VBのプログラム呼び出しで、実行時に与えられた値を取得したいのですが、 そのやり方がわかりません。 「C:¥TEST.EXE "abc"」で、実行したとき、"abc"の文字列を TEST.EXEで取得したいのですが、このときのVBのコーディングを 教えて下さい。 宜しくお願い致します。 

  • Perlで1行で済ませたいことで悩んでいます。

    Perlで1行で済ませたいことで悩んでいます。 sub test(){ return (1, 2, 3, 4, 'これ'); } test()[4] などとして、一旦配列に入れずに直接test()に添え字を付けて該当スカラー値を取得したいのですが、 可能でしょうか?

    • ベストアンサー
    • Perl
  • バッチファイル ショートカットをコピーする。

    こんにちは、 リモートコンピュータ上にショートカットを作るバッチファイルを作りたいと考えています。 以下に環境と行いたい事を書きますので、何かお分かりの方がいましたら教えてください。よろしくお願いします。 環境 PC01:Windows2000 PC02:WindowsXP Pc01にコピーするファイルを用意(c:\aに用意) c:\aの中: 「\test.exe」アプリケーション 「\test.exeのショートカット」 1.Pc02の\C:\Program Filesに 「\test.exe」アプリケーションをコピー 2.C:\Documents and Settings\All Users\スタート メニュー\プログラムに 「\test.exeのショートカット」をコピーしたい。 1.は分かるのですが、2.が分かりません。

  • Documents and Settings → Docume~1

    MS-DOS・FTPを行う際、悩むのがこの半角スペースの入ったフォルダ名、後半が引数と認識され、動かないんです。 Documents and Settings → Docume~1は覚えたんですが、ほかはみなさんいかに対処しているかご教授願います。 たとえば C:\A B C\ABC.TXT → ?

  • 【VB2005】プログラム実行時に引数を渡したい

    VB2005で作成したプログラムがありまして、 Shell("C:\XXX.Exe -Prg=1")というのを使って プログラムをShellで開きます。 そこで、"-Prg=1"という引数を、受け取る側のアプリケーションを 作りたいのですが、どういう方法で値を取得できるか教えてください。 よろしくお願いします。