如何将带双引号的字符串作为命令行参数传递给批处理文件

时间:2018-02-21 13:35:34

标签: windows batch-file command-prompt

我正在尝试使用双引号作为批处理文件的命令行参数来传递一个用空格分隔的字符串。但只有第一个字被采用,剩下的被忽略。以下是我的批处理文件。

@echo off
if "%1" == "" (
    echo "Usage: filename <interface_name>"
    exit /B ) 
set INTERFACE=%1
echo "Going to execute build for %INTERFACE%

执行上述批处理脚本会导致以下错误输出。

C:\Users\Administrator\Desktop\HPFW>save.bat "Ethernet PCIe Adapter"
PCIe was unexpected at this time.
C:\Users\Administrator\Desktop\HPFW>

任何人都可以让我知道当作为命令行参数传递给批处理文件时,我们如何处理用双引号分隔的字符串。

2 个答案:

答案 0 :(得分:1)

您可以取消引用命令行参数(以及带有~的令牌):

@echo off
if "%~1" == "" (
    echo "Usage: filename <interface_name>"
    exit /B ) 
set "INTERFACE=%~1"
echo "Going to execute build for '%INTERFACE%'"

答案 1 :(得分:1)

if "%~1" == "" (

这将从%1中删除任何封闭的引号,然后确保存在用于比较的引号。

另一种方式是

set "INTERFACE=%~1"
if not defined interface (error message etc)

其中interface的值设置为(第一个参数 - 包含引号)。这里的引号确保命令行上的尾随空格不包含在分配的值中。

如果没有定义interface(因为缺少参数)......