1

嘿伙计们非常简单的问题,我需要知道如何在 cmd 中将扩展/开关添加到命令中。另外,我将如何对我发出的命令执行此操作?(输入名称时调用的批处理文件)

前任。

传统的

ipconfig /all

修改

ipconfig -a

或者

ipconfig /a
4

2 回答 2

3

这是一个与上述答案相匹配的简单示例。

@echo off
if /i "%~1"=="-a" ipconfig /all
if /i "%~1"=="/a" ipconfig /all

(不要调用你的批处理文件 ipconfig.bat - 永远不要对批处理文件使用系统命令名称):

于 2013-08-04T18:41:43.477 回答
2

Cmd.exe 提供批处理参数扩展变量 %0 到 %9。在批处理文件中使用批处理参数时,%0 将替换为批处理文件名,%1 到 %9 将替换为您在命令行中键入的相应参数。要访问 %9 以外的参数,您需要使用 shift 命令。有关 shift 命令的详细信息,请参阅 Shift %* 批处理参数是对传递给批处理文件的所有参数(不包括 %0)的通配符引用。

例如,要将内容从 Folder1 复制到 Folder2,其中 %1 被值 Folder1 替换,%2 被值 Folder2 替换,请在名为 Mybatch.bat 的批处理文件中键入以下内容:

xcopy %1\*.* %2

要运行该文件,请键入:

mybatch.bat C:\folder1 D:\folder2

复制自 MSDN

用记事本创建一个批处理文件mytest.cmd并添加以下内容

rem start parsing out first parameter indicated with %1
set parm1=%1  
set arg1=%parm1:~2%

if "%arg1%"=="a" echo A was the parameter

现在 arg1a将从您的示例中保留而没有 - 或 /

如果你运行 mytest -a 你会看到A was the parameter 如果你运行 mytest -b 你什么也看不到...

(事实上​​,您会看到 cmd 文件中的每一个命令都便于调试,请尝试在 mytest.cmd 的第一行添加 @echo off 以消除噪音)

在 cmd 提示符下尝试set /?,if /?for /?call /?了解有关可用命令的更多信息。

于 2013-08-04T17:55:14.667 回答