スクリプトを書くのは初めてなので、これを機能させることはできません。スペースのないパスにファイルを移動した場合は可能ですが、可能であればスペースを使用したいのですが。
.cmdファイルがあるフォルダーに多数のOffice更新プログラムを抽出したい。バッチファイルを任意のコンピューターで使用できるようにするには、別のマシンで実行するために1か所で変更するだけでよいパス変数を設定します。問題は、パスにスペースが含まれていることです。定義内のパスを引用符で囲んだ場合、cmd.exeはファイル名を追加して切り替える前にパスを引用符で囲み、バッチは「コマンドライン構文エラー」で失敗します。引用符がないと、「内部または外部のコマンド、操作可能なプログラム、またはバッチファイルとして認識されません」というエラーが発生します。
テストのために、ヘルプスイッチを使用するまで、または正常に機能するようになります。 8.3ファイル/フォルダー名(たとえば、My Documents as MyDocu〜1)を使用して実行できますが、別の方法で実行できますか?
次のようなものを試してください:
SET MY_PATH=C:\Folder with a space
"%MY_PATH%\MyProgram.exe" /switch1 /switch2
私が使う
set "VAR_NAME=<String With Spaces>"
パスを更新する場合:
set "PATH=%UTIL_DIR%;%PATH%"
ここには2つのオプションがあります。最初に、パスを引用符で囲まずに保存し、後で引用することができます。
set MyPath=C:\Program Files\Foo
"%MyPath%\foo with spaces.exe" something
使用できる別のオプションは、文字列を引用符で囲まないようにするサブルーチンです(ただし、この場合、引用符を追加し、それらを削除して、利益なしに再度追加するため、実際にはあまり良い考えではありません):
set MyPath="C:\Program Files\Foo"
call :foo %MyPath%
goto :eof
:foo
"%~1\foo.exe"
goto :eof
%~1
は、引数を囲む引用符を削除します。これは、引用符で囲まれたフォルダ名を渡すときに役立ちますが、前述のように、この特定のケースでは最善のアイデアではありません:-)
これを試して;
以下のように変数を作成します
SET "SolutionDir=C:\Test projects\Automation tests\bin\Debug"**
次に、パスを変数に置き換えます。開始と終了の引用符を必ず追加してください
vstest.console.exe "%SolutionDir%\Automation.Specs.dll"
.batファイルを作成するときは、常にパスを二重引用符で囲みます。 (PAUSEを追加しただけなので、画面は閉じません。)
例えば:
"C:\Program Files\PageTech\PCLReader64_131\PCLReader64.exe"
PAUSE
これを行う適切な方法は次のとおりです。
@ECHO off
SET MY_PATH=M:\Dir\^
With Spaces\Sub Folder^
\Dir\Folder
:: calls M:\Dir\With Spaces\Sub Folder\Dir\Folder\hello.bat
CALL "%MY_PATH%\hello.bat"
pause
この問題を修正する最も簡単な方法は、フォルダー名を引用符で囲むことです。
(cd\New Folder\...) --> (cd\"New Folder"\...)
これが役に立てば幸いです。
永続的なパスを保存する必要がある場合(cmdの再起動時にパスは変更されません)
管理者としてコマンドプロンプトを実行します(cmd.exeを右クリックして、管理者として実行を選択します)
Cmd setx path "%path%;your new path"
に入力します
パスを入力してEnterキーを押して、パスが正しく使用されているかどうかを確認します