批处理文件任意命令行参数

时间:2015-11-24 18:46:23

标签: batch-file for-loop command-line-arguments batch-processing

我希望程序处理任意数量的命令行参数,但我不确定如何实现for循环来执行多个shift命令。此外,程序结束时不应关闭命令提示符窗口。

这是我到目前为止所做的:

@echo off
if "%1"=="" goto skip
if "%1"=="-ti" time /t
if "%1"=="-da" date /t
if "%1"=="-c" cls
if "%1"=="-ip" ipconfig
if "%1"=="-d" dir
if "%1"=="-p" path
if "%1"=="-v" ver
if "%1"=="-t" type
if "%1"=="-m" md
exit /b
:skip
echo No arguments!

我想让以下命令行参数正常运行:

C:\>batchfile –d –ti –da –ip –v
C:\>batchfile
C:\>batchfile –d –m CSC3323 –d
C:\>batchfile –d –t batchfile.bat –m CSC3323 –d

1 个答案:

答案 0 :(得分:1)

使用此代码在名为batchfile.bat的文件中循环遍历参数:

@echo off
echo arguments: "%*"
:loop
if "%~1"=="" goto skip
if "%~1"=="-ti" time /t
if "%~1"=="-da" date /t
if "%~1"=="-c" cls
if "%~1"=="-ip" ipconfig
if "%~1"=="-d" dir
if "%~1"=="-p" path
if "%~1"=="-v" ver
if "%~1"=="-t" type
if "%~1"=="-m" md
shift
goto loop
:skip
echo No arguments!
pause

并像这样调用batchscript:

start batchfile.bat -ti -d -ti -da -ip -v 
start batchfile.bat
start batchfile.bat -d -m CSC3323 -d 
start batchfile.bat -d -t batchfile.bat -m CSC3323 -d