プロが教えるわが家の防犯対策術!

batにドロップしたデータを一度別の場所にフォルダを作りコピーして、そのコピーしたデータをprogram fileより下の階層に移動させ、移動が成功したらコピー時に用意したファルダは削除するという処理を行いたいのですが、program file以下へのアクセスが拒否されてしまう為、powershellを使ったのですが、powershellを使ってbatを起動するとコンソールが一瞬表示されるだけで終わってしまったりしています。

batをツールを使用してexe化する方法も試してみましたが、管理者権限の確認画面が出るとドロップされたデータを認識しないようで、exeのプロパティから管理者としてこのプログラムを実行するを選択していても、いざ実行時には管理者権限がない状態で起動されてしまったりなどして上手くいきませんでした。

方法は特に問わないのですが、これを解決する方法はありますでしょうか。

以下にbatの内容を記載しておきます。


@echo off

if exist %1 goto filedrop

echo ファイルをドロップして下さい
pause
goto exit

:FILEDROP

echo ファイル[%*]がドロップされました。
echo:

cd /d %~dp0

set FOLDER=%~dp0
set FOLDER_NAME=一時保管用
set FILE_PASS=C:\Program Files\temp

echo コピー先[%FILE_PASS%]
echo:

echo C:\に%FOLDER_NAME%のフォルダを作成します
mkdir C:\%FOLDER_NAME%
echo:

echo C:\%FOLDER_NAME%にコピーします
echo:
for %%a in (%*) do copy %%a C:\%FOLDER_NAME%
echo:

echo C:\%FOLDER_NAME%から%FILE_PASS%にデータを移動します
echo:
if not exist "%FILE_PASS%" (
echo:%FILE_PASS%のフォルダが存在していない可能性があります
echo:%FILE_PASS%のフォルダを作成します。
mkdir "%FILE_PASS%"
)
move C:\%FOLDER_NAME%\* "%FILE_PASS%"
echo:

echo:%FOLDER_NAME%のフォルダを削除します。
rd C:\%FOLDER_NAME%
echo:
if exist C:\%FOLDER_NAME% (echo:C:\%FOLDER_NAME%のフォルダを削除出来ませんでした。) else (echo:C:\%FOLDER_NAME%のフォルダを削除しました。)

echo 完了しました
echo:
pause

質問者からの補足コメント

  • データをドロップしてバッチを起動させているので右クリックからの起動方法は使えないのです。
    それとも右クリックでの起動でファイルを取得する方法はあるのでしょうか。

    batファイルとは表現しないですね
    変な書き方をしてしまった

      補足日時:2018/11/30 17:39

A 回答 (2件)

set FILE_PASS=C:\Program Files\temp


        ↑
ここが決まっているのなら、そのフォルダのセキュリティのアクセス許可を「フルコントロール」なんかにすれば良いのでは?

そんな設定には出来ない状況かも知れないが…
    • good
    • 0

(´・ω・`)


原因が分かっているなら…
普通に管理者権限持たせて起動させればいいと思う。

対象のバッチファイルを右クリックして「管理者として実行」で良いでしょ。


・・・余談・・・
普通「batファイル」とは表現しない。
「バッチファイル」「batchファイル」などと表現します。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!