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用户文本),不必加引号,它也适用于整个句子。你可以这样做。你要做的是将脚本中的参数连接起来,但用空格分隔它们。请注意,这不如让用户用双引号包装文本强大,因为这意味着你必须丢弃用户的空格,并用空格替换用一个空格。例如,两个连续的空格变成一个空格,一个换行符后跟一个制表符变成一个空格等等。是的,但我写的方式,它也必须去掉双引号。是的,但我写的方式,它也必须去掉双引号。