【问题标题】:Batch File arbitrary command-line arguments批处理文件任意命令行参数
【发布时间】:2015-11-25 06:57:13
【问题描述】:

我希望程序处理任意数量的命令行参数,但我不确定如何实现一个 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

【问题讨论】:

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


【解决方案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

并像这样调用批处理脚本:

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 

【讨论】:

  • 为什么使用start?我猜你,或者更好的 OP,忘记了 "%~1" type 命令......
猜你喜欢
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-30
相关资源
最近更新 更多