web-dev-qa-db-ja.com

スペースを含むパスをパラメーターとしてバッチファイルに渡す

First.batでは、私は

var5=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_AMD64\
CALL scripts\vc64.bat %var5%

そしてscripts\vc64.batでは、私は使用します

SET var6=%1vcvarsx86_AMD64.bat
CALL %var6%

しかし、:'C:\Programvcvarsx86_AMD64.bat' is not internal or external command.....エラーが発生します。

Var5に割り当てられたパスにスペースがない場合は、問題ありません。

引用と%1vcvarsx86_AMD64.batのいくつかの組み合わせを試しましたが、変更はありませんでした。

スペースのあるパスで機能させるにはどうすればよいですか?


より正確には、C:\ a b c \であるとします。

In first.bat: 
     SET var6=C:\a b c\  =====>  '"C:\avcvarsx86_AMD64.bat"' is not.....`
     SET var6="C:\a b c\" ====>   There should not be a b
     SET var6=C:\a\ b\ c\ ====>    Can't find the specified path
     SET var6=C:\a b c\ + Using "%var6" ====> There should not be a b

更新:これは例です。 a bをab Worksに変更します。

c:\のcall.bat

@ECHO OFF

SET var5=C:\a b\
CALL C:\1.bat "%var5%"

pause

1. C:\のbat

@ECHO OFF

SET var6=%~1Test.bat
CALL %var6%

RMDIR /S C:\NoWorry

C:\ abのTest.bat b C:\ abのTest.bat

@ECHO OFF

RMDIR /S C:\ThereIsNoSuchFolder
6
user565739

スペースを含むパラメーターを渡すには、パラメーターを引用符で囲む必要があります。次に、%~1を使用して引用符を削除できます。

したがって、完全なスクリプトは次のようになります

SET var5=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_AMD64\
CALL scripts\vc64.bat "%var5%"

SET var6=%~1vcvarsx86_AMD64.bat
CALL %var6%
8
Bali C