Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 以%*作为参数生成批处理文件_Windows_Batch File_Parameters - Fatal编程技术网

Windows 以%*作为参数生成批处理文件

Windows 以%*作为参数生成批处理文件,windows,batch-file,parameters,Windows,Batch File,Parameters,我有一个用dos/batch编写的工具,可以根据需要生成其他批处理文件 工作正常,非常有用…… 基本上,内部工作与实际工作是一样的 echo dir /s \windows\*.log > logs.cmd 这将生成一个名为“logs”的脚本,其中包含一些功能 (这只是为了说明目的而进行的简化) 最近我需要添加%*作为生成的批处理文件的参数 (从命令行捕获所有输入参数) 问题是我不知道如何生成“%*”序列 我在网上尝试了几种转义序列和技巧google(ed) 但似乎什么都不管用 ?任何想

我有一个用dos/batch编写的工具,可以根据需要生成其他批处理文件

工作正常,非常有用……
基本上,内部工作与实际工作是一样的

echo dir /s \windows\*.log > logs.cmd
这将生成一个名为“logs”的脚本,其中包含一些功能
(这只是为了说明目的而进行的简化)

最近我需要添加%*作为生成的批处理文件的参数
(从命令行捕获所有输入参数)

问题是我不知道如何生成“%*”序列

我在网上尝试了几种转义序列和技巧google(ed)
但似乎什么都不管用

?任何想法???

根据第页,必须像这样转义,%marks:
%%
(双百分号,因此第二个将显示)

您应该能够将
*
作为普通转义字符传递,即:
^%
。如果这不起作用,请尝试
“*”
(但^escape应该起作用)

因此,一起将
%*
参数传递到代码中的情况如下:
%^*

根据第页,必须像这样转义,%marks:
%
(双百分号,因此第二个将显示)

您应该能够将
*
作为普通转义字符传递,即:
^%
。如果这不起作用,请尝试
“*”
(但^escape应该起作用)


因此,将
%*
参数传递到您的代码中看起来是这样的:
%^*

几乎没有什么可以添加到jmoon的答案中,但由于它对您不起作用(但对我有效),您可以尝试使用类似

@echo关闭
setlocal enableextensions disabledelayedexpansion
回显当前脚本参数
回音--------------------------------------------
回声%*
回音--------------------------------------------
>“output.cmd”(
回声@回声关闭
回声%%*
在(%%*^)中对%%%%a进行回显,执行回显%%%%a
)
回显生成的文件
回音--------------------------------------------
键入output.cmd
回音--------------------------------------------
echo传递不同的参数集
回音--------------------------------------------
调用output.cmd 1 2 3 4
回音--------------------------------------------
通过我们的辩论
回音--------------------------------------------
调用output.cmd%*
回音--------------------------------------------
回音传递转义字符串
回音--------------------------------------------
调用output.cmd%%%*
回音--------------------------------------------
这将产生

W:\>input.cmd a b c d e
Current script arguments
--------------------------------------------
a b c d e
--------------------------------------------
Generated file
--------------------------------------------
@echo off
echo %*
for %%a in (%*) do echo %%a
--------------------------------------------
Pass different set of arguments
--------------------------------------------
1 2 3 4
1
2
3
4
--------------------------------------------
Pass our arguments
--------------------------------------------
a b c d e
a
b
c
d
e
--------------------------------------------
Pass escaped string
--------------------------------------------
%*
--------------------------------------------
W:\>

对于jmoon的答案几乎没有什么可补充的,但是由于它对您不起作用(但对我起作用),您可以尝试使用以下内容

@echo关闭
setlocal enableextensions disabledelayedexpansion
回显当前脚本参数
回音--------------------------------------------
回声%*
回音--------------------------------------------
>“output.cmd”(
回声@回声关闭
回声%%*
在(%%*^)中对%%%%a进行回显,执行回显%%%%a
)
回显生成的文件
回音--------------------------------------------
键入output.cmd
回音--------------------------------------------
echo传递不同的参数集
回音--------------------------------------------
调用output.cmd 1 2 3 4
回音--------------------------------------------
通过我们的辩论
回音--------------------------------------------
调用output.cmd%*
回音--------------------------------------------
回音传递转义字符串
回音--------------------------------------------
调用output.cmd%%%*
回音--------------------------------------------
这将产生

W:\>input.cmd a b c d e
Current script arguments
--------------------------------------------
a b c d e
--------------------------------------------
Generated file
--------------------------------------------
@echo off
echo %*
for %%a in (%*) do echo %%a
--------------------------------------------
Pass different set of arguments
--------------------------------------------
1 2 3 4
1
2
3
4
--------------------------------------------
Pass our arguments
--------------------------------------------
a b c d e
a
b
c
d
e
--------------------------------------------
Pass escaped string
--------------------------------------------
%*
--------------------------------------------
W:\>

您尝试过什么转义序列?您尝试过什么转义序列?这就是问题所在…如果您在“echo”中使用该序列,它会工作…如果您通过“call”将其作为参数传递,它会被展开…即使它以这种方式转义…?有什么想法吗?在子程序(或external.cmd)中,您所说的展开是什么意思由调用调用调用接收的参数不是字符串“%*”但是,无论传递给包含调用的.cmd的参数是什么…无论如何,感谢您的输入…只是证明我做的事情是正确的…它们只是没有按照它们应该的方式工作…认为我需要一个专家,,,,有人知道如何将Rob Van Der带到这个问题上来吗?;-):-!如果我不打电话给下属,你的第一个建议就行了。。。或者一个外部的.cmd。。。已经测试了几种方法,为了解决这个问题,我现在传递了一个代理参数,在脚本内部进行解释,并替换为%*,,通过这个循环,我解决了这个问题。。但非常感谢你的洞察力…这就是问题所在。。。如果在“回音”中使用该序列,它会工作。。。如果您通过“调用”将其作为参数传递,它将展开。。。即使它是那样逃走的?任何想法??扩展是什么意思?在调用调用的子程序(或external.cmd)中,收到的参数不是字符串“%*”,而是传递给包含调用的.cmd的任何参数。。。不管怎样,谢谢你的意见。。。只是证明我做得对。。。他们只是没有按他们应该的那样工作…认为我需要一位大师,,,有人知道如何把罗布·范德带到这个问题上来吗?;-):-!如果我不打电话给下属,你的第一个建议就行了。。。或者一个外部的.cmd。。。已经测试了几种方法,为了解决这个问题,我现在传递了一个代理参数,在脚本内部进行解释,并替换为%*,,通过这个循环,我解决了这个问题。。但是非常感谢你的洞察力…谢谢。。。我试图避免“enableextensions”“disabledelayedexpansion”,因为它与我在批处理文件中使用的其他配置冲突…@ZEE,我在几乎所有发布的c中都包含了
setlocal…