如何将命令行参数传递给Windows批处理文件中的程序?

时间:2015-04-02 21:03:52

标签: windows batch-file

我试图这样做:

cd C:\Users\Public
%1 /s

其中%1是基于其执行位置而更改的名称和可执行文件,但在其他方面相同。问题是/s被视为命令或程序,而不是%1中传递的可执行文件的参数。我试图做的是什么?如果是这样,语法是什么?

3 个答案:

答案 0 :(得分:0)

如果你保存你的testit.bat,然后当你去运行它时,在你的批处理文件名之后添加参数:" testit dir"它将使用/ s开关运行dir命令。

答案 1 :(得分:0)

下一个例子可以提供帮助。注意:

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批处理脚本的基本必读):

答案 2 :(得分:0)

感谢您的帮助。我查看了文档和你的评论,虽然我仍然完全不确定这实际上是如何工作的,但我明智地使用了它。这是我提出的解决方案:

"%~1" /s