我有一个批处理文件,它从命令行调用批处理时从用户输入获取参数。我不是很擅长批量,所以为什么我在这里。我有多个文件,我希望用它来编译C ++代码,我需要的是一种获取多个参数的方法,而不指定有多少参数。
echo | set /p=g++ -c %1\%2.cpp > run.bat
pkg-config --cflags --libs gtkmm-3.0 >> run.bat
echo PAUSE >> run.bat
echo exit >> run.bat
start /wait run.bat
del run.bat
move %2.o %1\
示例运行:compile_sing helloworld main
这将编译.. \ helloworld \中的main.cpp并将生成的.o文件移动到.. \ helloworld \。
我还有另一个运行程序的批处理。
echo | set /p=g++ %1\%2.o %1\%3.o -o %1\%4 > run.bat
pkg-config --cflags --libs gtkmm-3.0 >> run.bat
echo PAUSE >> run.bat
echo exit >> run.bat
start /wait run.bat
del run.bat
start %1\%4
示例运行:run_mult helloworldv2 main file2 execute
这将创建可执行文件execute
并运行它。
我想要的是一种输入多个文件名而无需放置%#的方法。文件数量范围为1-n。
对于第二个,我确定我需要一个特殊的字符放在最后一个参数前面,以指明它是结束的。
答案 0 :(得分:0)
好的,在学习SHIFT
之后,感谢JosefZ的提示,我得到了答案。
为了编译多个文件,我使用了以下
set folder_path=%1
SHIFT
:start
echo | set /p=g++ -c %folder_path%\%1.cpp > run.bat
pkg-config --cflags --libs gtkmm-3.0 >> run.bat
echo exit >> run.bat
start /wait run.bat
del run.bat
move %1.o %folder_path%
SHIFT
if not "%1"=="" (goto :start)
PAUSE
为了运行已编译的文件,我使用了以下
set folder_path=%1
set files=
set var=
SHIFT
:set_files
set files=%files% %folder_path%\%1.o
SHIFT
set var=%1
if not "%var:~0,1%"=="/" (goto :set_files)
echo | set /p=g++ %files% -o %folder_path%\%var:~1% > run.bat
pkg-config --cflags --libs gtkmm-3.0 >> run.bat
echo PAUSE >> run.bat
echo exit >> run.bat
start /wait run.bat
del run.bat
start %folder_path%\%var:~1%