Как передать путь к каталогу с пробелами в сценарий .cmd? - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь передать два аргумента в мой скрипт .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)

Любое направление о том, как заставить скрипт принять аргумент с пробелами, будет оценено.Я знаю, что аргумент нуждается в кавычках, я просто не знаю синтаксис, чтобы удалить кавычки, прежде чем он интерполируется в переменную

1 Ответ

0 голосов
/ 07 февраля 2019

Предполагается, что вы выполняете свой командный файл следующим образом:

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)

Теперьпомните, что если вы используете эти переменные с пробелами, вам также понадобится заключить их в кавычки при их использовании.Лучше всего всегда использовать кавычки независимо от того, нужны ли они.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...