###前提・実現したいこと
受け取ったコマンドライン引数を列挙するCプログラムがあり、batファイル内でそのCプログラムに引数を渡し実行したいのですが、引数にスペースが含まれる場合の処理に困っています。
###発生している問題・エラーメッセージ
[1] スペースを含むパスを変数に格納し、Cプログラムにその変数を引数として渡した場合、そのまま渡すとスペースの部分で変数の中身が分割されてしまいます。
[2] しかし変数を渡すときにダブルクォーテーションで囲むと、なぜかその変数以降の引数まで合わせてひとつの引数と認識されてしまいます。
なにか解決方法はありますでしょうか。
[1]の場合の結果 0: a 1: C:\test 2: files\ 3: 2 4: 3 [2]の場合の結果 0: a 1: C:\test files\ 2 3
###該当のソースコード
batファイルの場所:C:\test files\
a.exe
C
1#include<stdio.h> 2int main(int argc, char *argv[]){ 3 int i; 4 for(i=0; i<argc; i++){ 5 printf("%d: %s\n", i, argv[i]); 6 } 7 return 0; 8}
test.bat
bat
1@echo off 2rem 3set path=%~dp0 // カレントディレクトリのパス(スペースが含まれる) 4a.exe %path% 2 3 // [1]の場合 5a.exe "%path%" 2 3 // [2]の場合
###補足情報(言語/FW/ツール等のバージョンなど)
windows7
gcc

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/21 11:36
2017/06/21 14:45