Scripting 批处理:如何使用空格调用第二个参数?

Scripting 批处理:如何使用空格调用第二个参数?,scripting,parameters,batch-file,Scripting,Parameters,Batch File,我使用两个参数调用批处理文件,如下所示: C:\myBatch.bat username hello this is text 现在我想访问用户名(没问题,%1)。但我现在想在一秒钟内得到所有其他单词的参数。如果我打电话给%2,只有“你好”。我不可能在文本周围用双引号调用批处理文件 有什么想法吗?(类似于while%i!=“然后在一个变量中执行此操作…”)基于此文档双引号应该可以工作。基于此文档双引号应该可以工作。仅使用双引号是将空格分隔的字符串打包到单个参数中的正确方法,但作为替代方法,您可

我使用两个参数调用批处理文件,如下所示:

C:\myBatch.bat username hello this is text
现在我想访问用户名(没问题,%1)。但我现在想在一秒钟内得到所有其他单词的参数。如果我打电话给%2,只有“你好”。我不可能在文本周围用双引号调用批处理文件


有什么想法吗?(类似于while%i!=“然后在一个变量中执行此操作…”)

基于此文档双引号应该可以工作。

基于此文档双引号应该可以工作。

仅使用双引号是将空格分隔的字符串打包到单个参数中的正确方法,但作为替代方法,您可以使用FOR来解析“所有参数变量”(*)

当被称为
test.cmd昵称foo bar baz时,它会打印:

Username=nickname 
Message=foo bar baz

我想这就是您想要的?

仅使用双引号是将空格分隔的字符串打包为单个参数的正确方法,但作为替代方法,您可以使用FOR来解析“all parameters variable”(*)

当被称为
test.cmd昵称foo bar baz时,它会打印:

Username=nickname 
Message=foo bar baz

我想这就是您想要的?

在调用批处理脚本时,将第二个参数放在双引号中

在批处理脚本中,使用
%~2
引用不带引号的第二个参数

如果要在quoted参数内使用双引号,请复制quote字符。在批处理脚本中使用DEQUOTE时,也会删除重复的引号,好吗


下面是一个简单的脚本来说明这个想法:

@ECHO OFF
ECHO %1 %2
ECHO %~1 %~2
现在这样称呼它:

C:\myBatch.bat username hello this is text
mybatch.bat用户名“您好,这是文本”

并看到结果:

用户名“你好,这是文本”

用户名你好,这是文本

也就是说,当您使用
%i
引用参数时,引号(如果有)将被保留,但
%i
会有效地为您删除它们


而且,正如您从
%~1
使用中所看到的,如果没有引号,输出与
%1
相同,因此您不需要总是包含引号来证明波浪线的使用。

在调用批处理脚本时,将第二个参数放在双引号中

在批处理脚本中,使用
%~2
引用不带引号的第二个参数

如果要在quoted参数内使用双引号,请复制quote字符。在批处理脚本中使用DEQUOTE时,也会删除重复的引号,好吗


下面是一个简单的脚本来说明这个想法:

@ECHO OFF
ECHO %1 %2
ECHO %~1 %~2
现在这样称呼它:

C:\myBatch.bat username hello this is text
mybatch.bat用户名“您好,这是文本”

并看到结果:

用户名“你好,这是文本”

用户名你好,这是文本

也就是说,当您使用
%i
引用参数时,引号(如果有)将被保留,但
%i
会有效地为您删除它们


而且,正如您从
%~1
使用中看到的,如果没有引号,输出与
%1
相同,因此您不需要总是包含引号来证明波浪线的使用。

用双引号包装参数有什么问题?因为这是一项“例行工作”对于我和我的一个朋友来说。这意味着,它必须像XP中的NetSend一样可调用(NetSend用户文本),不必加引号,它也适用于整个句子。你可以这样做。你要做的是将脚本中的参数连接起来,但用空格分隔它们。请注意,这不如让用户用双引号包装文本强大,因为这意味着你必须丢弃用户的空格,并用空格替换用一个空格。例如,两个连续的空格变为一个空格,一个换行符后跟一个制表符变为一个空格等等。用双引号包装参数有什么问题吗?这是因为这对我和我的一个朋友来说是一项“例行工作”。这意味着,它必须像XP中的net send一样可调用(net send用户文本),不必加引号,它也适用于整个句子。你可以这样做。你要做的是将脚本中的参数连接起来,但用空格分隔它们。请注意,这不如让用户用双引号包装文本强大,因为这意味着你必须丢弃用户的空格,并用空格替换用一个空格。例如,两个连续的空格变成一个空格,一个换行符后跟一个制表符变成一个空格等等。是的,但我写的方式,它也必须去掉双引号。是的,但我写的方式,它也必须去掉双引号。