我试图将两个参数传递到我的.cmd脚本中,以为arg1创建一个文件夹,并为arg2定义一个源目录。源目录是“共享文档”。问题是,如果没有声明路径不存在,则无法将空格或通配符传递给参数。我也尝试过使用引号和相同的结果传递它。
@set dirYr=%1
@set dir1=%2
@set connectionroot=https://somewhere.com/sites/foo_bar/foobar/FooBar::Source path
@set sourcepath=https://somewhere.com/sites/foo_bar/foobar/FooBar\%dir1%::Destination path
@set destinationpath=\\foo\bar\%dirYr%\%dir1%
::Check commandline argument to make sure that %2 is present.
IF NOT DEFINED dir1 (echo USAGE: foo_bar.cmd ^<YYYY^>^<Directory^|Filename^>GOTO badexit)
任何有关如何使脚本接受带空格的参数的指导,将不胜感激。我知道参数需要用引号引起来,我只是不知道在插值到变量之前要删除引号的语法
答案 0 :(得分:1)
假设您正在执行这样的批处理文件:
myscript.bat "arg 1" "arg 2"
使用这些命令行参数和定义变量的最佳做法如下所示。
@echo off
set "dirYr=%~1"
set "dir1=%~2"
set "connectionroot=https://somewhere.com/sites/foo_bar/foobar/FooBar"
set "sourcepath=https://somewhere.com/sites/foo_bar/foobar/FooBar\%dir1%"
set "destinationpath=\\foo\bar\%dirYr%\%dir1%"
::Check commandline argument to make sure that %2 is present.
IF NOT DEFINED dir1 (echo USAGE: foo_bar.cmd ^<YYYY^>^<Directory^|Filename^>GOTO badexit)
现在请记住,如果您正在使用带空格的变量,则在使用它们时也需要引用这些变量。最佳做法是始终使用引号,而不管是否需要引号。