我试图做到这一点:如何将命令行参数传递给Windows批处理文件中的程序?
cd C:\Users\Public
%1 /s
%1中的名称和可执行改变根据在那里它被执行,但在其他方面是相同的。问题是/s
被视为命令或程序,而不是在%1
中传递的可执行文件的参数。我正在尝试做什么?如果是这样,语法是什么?
我试图做到这一点:如何将命令行参数传递给Windows批处理文件中的程序?
cd C:\Users\Public
%1 /s
%1中的名称和可执行改变根据在那里它被执行,但在其他方面是相同的。问题是/s
被视为命令或程序,而不是在%1
中传递的可执行文件的参数。我正在尝试做什么?如果是这样,语法是什么?
感谢所有帮助球员。我查看了文档和您的意见,尽管我仍然完全不确定这实际上应该如何工作,但我明白了它的工作原理。这是我想出的解决方案:
"%~1" /s
如果我或**任何其他**答案有帮助,请考虑将其标记为已接受。 [见本页](http://meta.stackexchange.com/questions/5234/)解释为什么这很重要。 – JosefZ 2016-02-24 12:25:49
如果您保存testit.bat的内容,然后在运行时将其添加到批处理文件名后面:“testit dir”,它将使用/ s开关运行dir命令。
让我确定我明白了这一点,我是一个Unix家伙,所以Windows批处理文件对我来说完全是陌生的。如果我有一个名为runit.bat的批处理文件,并输入“runit executable”,那么可执行文件将与/ s开关一起运行?如果我正确理解这一点,如果传递给%1的参数包含空格,我该怎么办? – Jonathan 2015-04-02 21:17:29
如果您在Windows中访问dos提示符(单击开始按钮并在“搜索程序和文件”中键入cmd并按回车)。这应该打开一个dos窗口。在该dos窗口中,切换到testit.bat文件所在的文件夹(cd \ users \ public)。 – Eric 2015-04-02 22:09:10
抱歉,首先将您的批处理文件更改为%〜1而不是%1。然后当你运行它时键入:testit“dir/p” – Eric 2015-04-02 22:19:47
下一个例子可以帮助。注:
"
使用双引号:如果一个参数包含空格,你仍然可以通过在“引号”周围把它作为一个项目 - 这非常适用于长文件名:Syntax : Escape Characters, Delimiters and Quotes;%*
是指所有的参数(例如%1 %2 %3 %4 %5 ... %255
),但只有参数%1
到%9
可通过编号来引用:Command Line arguments (Parameters)的cliparsearg.bat
脚本打印所有命令行参数:
==>type cliparsearg.bat
@echo OFF >NUL
set /A "ii=0"
:loopfor
echo param %%%ii% = %0
SHIFT
set /A "ii+=1"
if not [%0]==[] goto :loopfor
echo all %%* = %*
goto :eof
==>cliparsearg.bat withoutspaces /S 3rdPar
param %0 = cliparsearg.bat
param %1 = withoutspaces
param %2 = /S
param %3 = 3rdPar
all %* = withoutspaces /S 3rdPar
==>cliparsearg.bat with 2 spaces /S 3rdPar
param %0 = cliparsearg.bat
param %1 = with
param %2 = 2
param %3 = spaces
param %4 = /S
param %5 = 3rdPar
all %* = with 2 spaces /S 3rdPar
==>cliparsearg.bat "with 2 spaces" /S 3rdPar
param %0 = cliparsearg.bat
param %1 = "with 2 spaces"
param %2 = /S
param %3 = 3rdPar
all %* = "with 2 spaces" /S 3rdPar
资源(基本必需的读取 Windows批处理脚本):
可能的重复[如何将命令行参数传递给批处理文件?](http://stackoverflow.com/questions/26551/how-to-pass-command -line-parameters-to-a-batch-file) – SomethingDark 2015-04-02 21:06:20