gpt4 book ai didi

windows - 在 Windows 命令行中使用批处理文件中的参数

转载 作者:可可西里 更新时间:2023-11-01 11:52:25 26 4
gpt4 key购买 nike

在 Windows 中,如何访问运行批处理文件时传递的参数?

例如,假设我有一个名为hello.bat 的程序。当我在 Windows 命令行输入 hello -a 时,如何让我的程序知道 -a 已作为参数传入?

最佳答案

正如其他人已经说过的,通过命令行传递的参数可以在批处理文件中使用符号 %1%9 访问。您还可以使用其他两个 token :

  • %0在命令行中指定的可执行文件(批处理文件)名称
  • %*在命令行中指定的所有参数 -- 如果您想将参数转发给另一个程序,这将非常有用。

除了简单的如何访问参数之外,还有许多重要的技术需要注意。

检查是否传递了参数

这是通过类似 IF "%~1"==""" 的构造完成的,当且仅当根本没有传递任何参数时才为真。请注意波浪字符,它会导致从 %1 的值中删除任何周围的引号;没有波浪号,如果该值包含双引号,您将得到意想不到的结果,包括语法错误的可能性。

处理超过 9 个参数(或只是让生活更轻松)

如果您需要访问超过 9 个参数,您必须使用命令 SHIFT。此命令将所有参数的值移动一个位置,以便 %0%1 的值,%1 的值code>%2 等。%9 取第十个参数的值(如果存在的话),在调用 SHIFT 之前无法通过任何变量获得该值>(输入命令 SHIFT/? 以获得更多选项)。

SHIFT 在您想要轻松处理参数而不要求它们以特定顺序显示时也很有用。例如,脚本可以以任何顺序识别标志 -a-b。在这种情况下解析命令行的一个好方法是

:parse
IF "%~1"=="" GOTO endparse
IF "%~1"=="-a" REM do something
IF "%~1"=="-b" REM do something else
SHIFT
GOTO parse
:endparse
REM ready for action!

此方案允许您解析非常复杂的命令行而不会发疯。

批量参数替换

对于表示文件名的参数,shell 提供了许多与处理无法通过任何其他方式访问的文件相关的功能。使用以 %~ 开头的结构访问此功能。

例如,要获取作为参数传入的文件的大小,请使用

ECHO %~z1

要获取启动批处理文件的目录路径(非常有用!),您可以使用

ECHO %~dp0

您可以通过在命令提示符中键入 CALL/? 查看所有这些功能。

关于windows - 在 Windows 命令行中使用批处理文件中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14286457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com