我试图这样做:
cd C:\Users\Public
%1 /s
其中%1是基于其执行位置而更改的名称和可执行文件,但在其他方面相同。问题是/s
被视为命令或程序,而不是%1
中传递的可执行文件的参数。我试图做的是什么?如果是这样,语法是什么?
答案 0 :(得分:0)
如果你保存你的testit.bat,然后当你去运行它时,在你的批处理文件名之后添加参数:" testit dir"它将使用/ s开关运行dir命令。
答案 1 :(得分:0)
下一个例子可以提供帮助。注意:
"
双引号使用:如果单个参数包含空格,您仍然可以通过围绕"引号"将其作为一个项目传递。 - 这适用于长文件名: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批处理脚本的基本必读):
答案 2 :(得分:0)
感谢您的帮助。我查看了文档和你的评论,虽然我仍然完全不确定这实际上是如何工作的,但我明智地使用了它。这是我提出的解决方案:
"%~1" /s