質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

1回答

3119閲覧

バッチ ダブルクォーテーションの扱いについて

kou813

総合スコア10

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

1クリップ

投稿2019/09/19 10:01

編集2019/09/20 01:38

バッチファイルを作成するバッチを作成しています。

スペースや”を含む文字列の扱いに苦戦しております。

■作りたいバッチ: uninstal.bat
call "C:\Program Files\Common Files\Microsoft Shared\OFFICE14\Office Setup Controller\setup.exe" /uninstall SHAREPOINTDESIGNER /dll OSETUP.DLL"

■バッチを作成するバッチ
set CMDcal=call
set CMDdir=C:\Program Files\Common Files\Microsoft Shared\OFFICE14\Office Setup Controller\setup.exe
set CMDopt=" /uninstall SHAREPOINTDESIGNER /dll OSETUP.DLL" ※修正しました

set CMDstr=%CMDcal%"%CMDdir%"
set StrOpt=%CMDopt% ※修正しました
set TEMP=%CMDstr%%StrOpt%

REM echo %CMDstr%>>uninstall_.bat ※不要でした
echo %TEMP%>>uninstall_.bat

この処理では、どうしても下記の結果のように
~~setup.exe"" 部分で ダブルクォーテーションが余分にできてしまいます。

call "C:\Program Files\Common Files\Microsoft Shared\OFFICE14\Office Setup Controller\setup.exe"" /uninstall SHAREPOINTDESIGNER /dll OSETUP.DLL"

set TEMP=%CMDstr%%StrOpt:~1% などで逃がそうとしてもうまく動作できません。

どのような書き方をすれば理想の形になるでしょうか?

この後に、下記コードを入れて
管理者モードでバッチを動かすために、このような方法を取っております。
powershell.exe -Command Start-Process """"uninstall_.bat"""" -Verb Runas

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2019/09/19 12:18

作りたいバッチの末尾の " はどういう意味があるのですか? このまま実行すると、 echo %TEMP%>>uninstall_.bat のリダイレクトが引用符の中なので、uninstall_.bat が作成されませんが??
kou813

2019/09/20 01:42

otnさん 失礼しました、コードまちがってました。 しかも、うごきそうです!少々お待ちください ありがとうございます set CMDcal=call set CMDdir=C:\Program Files\Common Files\Microsoft Shared\OFFICE14\Office Setup Controller\setup.exe set CMDopt=" /uninstall SHAREPOINTDESIGNER /dll OSETUP.DLL" set CMDstr=%CMDcal%"%CMDdir%" set StrOpt=%CMDopt% set STRtmp=%CMDstr%%StrOpt% echo %STRtmp%>>uninstall_.bat
guest

回答1

0

ベストアンサー

ダブルクォーテーションが余分にできてしまいます。

余分なら付けなければいいのでは?

CMD

1set CMDcal=call 2set CMDdir=C:\Program Files\Common Files\Microsoft Shared\OFFICE14\Office Setup Controller\setup.exe 3set CMDopt= /uninstall SHAREPOINTDESIGNER /dll OSETUP.DLL" 4 5set CMDstr=%CMDcal%"%CMDdir%" 6set StrOpt=%CMDopt% ← ここ 7set TEMP=%CMDstr%%StrOpt% 8 9REM echo %CMDstr%>>uninstall_.bat ※不要でした 10echo %TEMP%>>uninstall_.bat

質問のコメントに書きましたが、このままではuninstall_.batに書かれませんが。

また、TEMPはOS的に意味のある環境変数なので、目的に外れた使い方をしないほうがいいです。

投稿2019/09/19 12:46

otn

総合スコア84557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kou813

2019/09/20 07:45

otnさん ありがとうございます。 無事に動作するプログラムが書けました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問