こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

OutlookクイックパーツのエクスポートBAT

【環境】Windows 10 Enterprise 2016 LTSB,Outlook 2016

【状況】
パソコンが故障した場合に備えて、Outlookクイックパーツのエクスポートを行い、パソコンの交換になった場合にエクスポートしたOutlookクイックパーツをインポートするBATファイルを作成しました。

(1) ExportOutlookQuickParts.BAT

@Echo off
REM --- Outlook クイックパーツ
Set OutlookQuickParts=C:\Users\%username%\AppData\Roaming\Microsoft\Templates\NormalEmail.dotm
REM ---Outlook クイックパーツ エクスプポート フォルダ
Set OutlookQuickParts_ExportFolder=D:\OutlookQuickParts_ExportFolder

If Exist %OutlookQuickParts% (
If Exist %OutlookQuickParts_ExportFolder% (
Echo Outlook クイックパーツのエクスポートを開始します。
copy %OutlookQuickParts% %OutlookQuickParts_ExportFolder%
Echo Outlook クイックパーパーツ『 NormalEmail.dotm 』をフォルダ『 %OutlookQuickParts_ExportFolder% 』にエクスポートしました。
) Else (
Mkdir %OutlookQuickParts_ExportFolder%
Echo フォルダ『 %OutlookQuickParts_ExportFolder% 』を作成しました。
   Echo Outlook クイックパーツのエクスポートを開始します。
copy %OutlookQuickParts% %OutlookQuickParts_ExportFolder%
Echo Outlook クイックパーパーツ『 NormalEmail.dotm 』をフォルダ『 %OutlookQuickParts_ExportFolder% 』にエクスポートしました。
)
) Else (
Echo Outlook クイックパーパーツ『 NormalEmail.dotm 』が存在しません。
Echo Outlook クイックパーパーツ『 NormalEmail.dotm 』のエクスポートを中止しました。
)
pause

(2) ImportOutlookQuickParts.BAT

@Echo off
REM --- Outlook クイックパーツ
Set OutlookQuickParts=D:\OutlookQuickParts_ExportFolder\NormalEmail.dotm
REM ---Outlook クイックパーツ インポート フォルダ
Set OutlookQuickParts_ImportFolder=C:\Users\%username%\AppData\Roaming\Microsoft\Templates\

If Exist %OutlookQuickParts% (
If Exist %OutlookQuickParts_ImportFolder% (
Echo Outlook クイックパーツのインポートを開始します。
copy %OutlookQuickParts% %OutlookQuickParts_ImportFolder%
Echo Outlook クイックパーパーツ『 NormalEmail.dotm 』をフォルダ『 %OutlookQuickParts_ImportFolder% 』にエクスポートしました。
) Else (
Echo フォルダ『 %OutlookQuickParts_ImportFolder% 』は存在しません。
Echo Outlook クイックパーパーツ『 NormalEmail.dotm 』のインポートを中止しました。
)
) Else (
Echo Outlook クイックパーパーツ『 NormalEmail.dotm 』が存在しません。
Echo Outlook クイックパーパーツ『 NormalEmail.dotm 』のインポートを中止しました。
)
pause

【ご教示いただきたい点】

「ExportOutlookQuickParts.BAT」において、Outlook クイックパーツ エクスプポート フォルダが存在しない場合、Outlook クイックパーツ エクスプポート フォルダを作成するように設定していますが、なぜか、フォルダではなく、ファイルが作成されてしまいます。Outlook クイックパーツ エクスプポート フォルダについては、ネットワークドライブに作成するようになっています。
mkdirコマンドでフォルダではなく、ファイルが作成されてしまう原因がわからず、困っておりますのでご教示いただけますようお願いいたします。

投稿日時 - 2019-05-28 23:21:02

QNo.9620992

困ってます

質問者が選んだベストアンサー

mkdirがファイルを作成するとは考えられないので、何らかの原因でフォルダが作成できずに、その後のcopyコマンドがコピー先の指定をファイル名として処理していると考えるのが妥当だと思います。
1つずつ処理の結果を確認してみてはいかがでしょうか。

なお、IFをネストしていくのはあまりおすすめできません。

IF ファイルが存在しない (
メッセージを表示
バッチファイルを終了
)
IF フォルダが存在しない (
フォルダを作成
)
ファイルをコピー

という構成にした方がいいと思います。
また、C:\Users\%username%は%userprofile%を使ったほうがいいでしょう。

投稿日時 - 2019-05-29 10:09:14

補足

ありがとうございます。

BATの中身はそのままで、本日 試したところ、フォルダが存在しないときにフォルダが作成されることを確認しました。
昨日は、BATにおいて、mkdirでフォルダを作成する箇所において、「アクセスが拒否されました」のメッセージでフォルダが作成されなかったり、ファイル「OutlookQuickParts_ExportFolder」が作成されていました。
そのため、昨日、mkdirコマンドでフォルダを作成できない環境なのかと思ってコマンドプロンプトで実行しましたが、問題なくフォルダは作成できました。

パソコンの再起動は行っておらず、原因は不明ですが、現時点では改善いたしました。

明日、IF文のネストはやめて、%username%を%userprofile%にして試してみることにします。

投稿日時 - 2019-05-29 20:14:28

お礼

以下で試してみることにします。

(1) ExportOutlookQuickParts.BAT

Echo off

REM --- Outlook クイックパーツ
Set OutlookQuickParts=%userprofile%\AppData\Roaming\Microsoft\Templates\NormalEmail.dotm

REM ---Outlook クイックパーツ エクスプポート フォルダ
Set OutlookQuickParts_ExportFolder=D:\OutlookQuickParts_ExportFolder

If Not Exist %OutlookQuickParts% (
Echo Outlook クイックパーパーツ『 NormalEmail.dotm 』が存在しません。
Echo Outlook クイックパーパーツ『 NormalEmail.dotm 』のエクスポートを中止しました。
Exit
)
If Not Exist %OutlookQuickParts_ExportFolder%
Mkdir %OutlookQuickParts_ExportFolder%
Echo フォルダ『 %OutlookQuickParts_ExportFolder% 』を作成しました。
)
Echo Outlook クイックパーツのエクスポートを開始します。
copy %OutlookQuickParts% %OutlookQuickParts_ExportFolder%
Echo Outlook クイックパーパーツ『 NormalEmail.dotm 』をフォルダ『 %OutlookQuickParts_ExportFolder% 』にエクスポートしました。
pause

(2) ImportOutlookQuickParts.BAT

@Echo off

REM --- Outlook クイックパーツ
Set OutlookQuickParts=D:\OutlookQuickParts_ExportFolder\NormalEmail.dotm

REM ---Outlook クイックパーツ インポート フォルダ
Set OutlookQuickParts_ImportFolder=%userprofile%\AppData\Roaming\Microsoft\Templates\

If Not Exist %OutlookQuickParts% (
Echo Outlook クイックパーパーツ『 NormalEmail.dotm 』が存在しません。
Echo Outlook クイックパーパーツ『 NormalEmail.dotm 』のインポートを中止しました。
Exit
)
If Not Exist %OutlookQuickParts_ImportFolder% (
Echo フォルダ『 %OutlookQuickParts_ImportFolder% 』は存在しません。
Echo Outlook クイックパーパーツ『 NormalEmail.dotm 』のインポートを中止しました。
Exit
)
Echo Outlook クイックパーツのインポートを開始します。
copy %OutlookQuickParts% %OutlookQuickParts_ImportFolder%
Echo Outlook クイックパーパーツ『 NormalEmail.dotm 』をフォルダ『 %OutlookQuickParts_ImportFolder% 』にインポートしました。
pause

投稿日時 - 2019-05-29 21:24:37

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)