あなたの映画力を試せる!POPLETA映画検定(無料) >>

「ネットワークドライブ経由で他サーバ(仮にサーバB)のファイルを削除する」バッチを作成しました。

このバッチをサーバAへ置き、手動で実行すると上手く動くのですが、
タスクスケジューラに設定して実行すると失敗してしまいます。

確認用に下記ロジックを試してみると、
 dir "Z:\files" (Zがネットワークドライブ)
手動ではファイル一覧が表示され、タスクからだと何も表示されず終わります。

サーバAへはAdministratorでログインしており、タスクを実行するアカウントも
Administratorを使用し、もちろんAdministrators権限も持っています。

実行環境はwindows server 2003 です。(サーバAB両方共)

一つ気になる点としては、サーバAへはリモートデスクトップでログインしています。
このあたりの複合的な要素で権限が変わっているのかもしれませんが確認方法が判らず
困っております。

タスクからでも同様に動かせる方法や、バッチ上から実行中アカウントを知る方法など
ご存知の方がいらっしゃいましたらご回答をお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

手動では動くけどタスクスケジューラでは動かないという場合は、作業ディレクトリを指定してないという場合が多いようですが、指定していますか。



「タスクスケジューラ バッチファイル」で検索するといろいろなケースが見つかります。

下記など参考になるかと思います。

http://tobysoft.net/wiki/index.php?Windows%2FVis …

http://mroom.cool.ne.jp/nikki/archives/000059.html

http://webcache.googleusercontent.com/search?q=c …
    • good
    • 0
この回答へのお礼

分かりづらい質問で申し訳ないです。

改めて要点を整理させて頂きます。
・手動ではバッチは正常に実行される。
・タスクで実行すると、バッチ自体は実行されるがエラーとなってしまう。
・エラーとなる箇所はネットワークドライブにアクセスしてファイルを削除するという処理
・ネットワークドライブにアクセスするだけのバッチ(dir "Z:\files"のみ書いたバッチ)
 で動作を確認したらタスク実行の場合何も表示されず終了してしまう。

以上となります。説明下手で申し訳ないですが分かりづらい点がありましたら
再度ご指摘願います。

お礼日時:2011/03/31 22:59

まず基本的なこと。



ネットワークドライブって、誰に対してのドライブ? 基本的にユーザー情報なので、システムとしてはマウントしていないんだけど?

しかも、ネットワークドライブていっているけど、どうやってまうんとしているんだろう?

タスクにnet useで作成して、それで、切断してみればわかるでしょう。

それに、ちゃんとログに失敗のヒントでていますよ。ログをまずみましょう。もし出ていないのなら、出るように設定してからためしましょう。

>リモートデスクトップでログインしています

さらに関係がわからない。どこかどう関係してるか書いていない。そのリモートディスクトップ上から実行???

ちゃんと説明しようね。。。。。
    • good
    • 0
この回答へのお礼

>ネットワークドライブって、誰に対してのドライブ?
1行目の通り、他サーバ(仮にサーバB)です。サーバBのあるフォルダにZドライブを
割り付け、その直下のfilesフォルダにアクセス、という形です。

>しかも、ネットワークドライブていっているけど、どうやってまうんとしているんだろう?
windows server 2003ですので、普通にサーバB上でネットワークドライブを作成しているの
ですが、マウント手順によって何か気になる点が出てきますでしょうか?

>タスクにnet useで作成して、それで、切断してみればわかるでしょう。
すいません、何が判るのでしょうか。

>それに、ちゃんとログに失敗のヒントでていますよ。ログをまずみましょう。もし出ていないのなら、出るように設定してからためしましょう。
ご指摘のログとは何のログを指していますでしょうか。例として挙げたdirコマンドに
ついてでしたら、一切ログは出ておりません。

>>リモートデスクトップでログインしています
>さらに関係がわからない。どこかどう関係してるか書いていない。そのリモートディスク>トップ上から実行???
「サーバAへはリモートデスクトップでログイン」と書いている通りです。
サーバAでの作業は全てリモートデスクトップを通して行っている、というだけなのですが、
リモートデスクトップを経由する事で、何かしらの制限(リモート作業に対する
セキュリティの為、自動的に一部権限に制限が掛かる等)があったりするかも、
という一案を述べてあるに過ぎません。

以上、その他不明点などありましたらご指摘ください。

お礼日時:2011/03/31 22:37

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QWindowsServer2012で、タスクスケジューラでのバッチ実行だとうまくいかない

WindowsServer2012で、タスクスケジューラで、夜間にNASへファイルをコピーするバッチを動かしています。バッチの中でログを書き出すようにしているので、実行されているのは間違いありませんが、以下に示すように「パスが見つからない」ということになってしまいます。

このバッチファイルをそのまま、手動で起動すると、全く問題なくコピーされますが、タスクスケジューラーから起動した場合はうまくいきません。

バッチの内容
------------

rem net use X: \\192.168.xx.xx\dbback /USER:xxxxxx xxxxxx


rem /**********************************/
rem ログファイルを格納するフォルダ
D:
cd \LOG
rem /**********************************/
rem
echo /**** copy Start *******************************/
date /T
time /T
echo on


copy "D:\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\xxxx.bak" X:\xxxx.bak /Y
copy "D:\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\xxxx1.bak" X:\xxxx1.bak /Y
copy "D:\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\xxxx11.bak" X:\xxxx11.bak /Y
echo /**** copy END *******************************/
time /T
echo .
-------------

タスクスケジューラから実行した場合のログ
------------
(略)

D:\log>copy "D:\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\xxxx.bak" X:\xxxx.bak /Y
指定されたパスが見つかりません。
0 個のファイルをコピーしました。

D:\log>copy "D:\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\xxxx1.bak" X:\xxxx1.bak /Y
指定されたパスが見つかりません。
0 個のファイルをコピーしました。

D:\log>copy "D:\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\xxxx11.bak" X:\xxxx11.bak /Y
指定されたパスが見つかりません。
0 個のファイルをコピーしました。

(略)
------------------

手動でこのバッチを起動した場合は、「1個のファイルをコピーしました」が記録されます。

Xドライブはあらかじめネットワークドライブとして指定してありますし、ログオンしたままの状態です。

タスクで実行した場合に、ログも記録されない=実行されないのであれば、何か設定が悪いというのはわかりますが、手動で問題なく稼働するバッチをタスクから実行した場合にこのような結果になるのが謎です。

よろしくお願い致します。

WindowsServer2012で、タスクスケジューラで、夜間にNASへファイルをコピーするバッチを動かしています。バッチの中でログを書き出すようにしているので、実行されているのは間違いありませんが、以下に示すように「パスが見つからない」ということになってしまいます。

このバッチファイルをそのまま、手動で起動すると、全く問題なくコピーされますが、タスクスケジューラーから起動した場合はうまくいきません。

バッチの内容
------------

rem net use X: \\192.168.xx.xx\dbback /USER:xxxxxx xxxx...続きを読む

Aベストアンサー

rem になっていますが、バッチファイルの中で、net use でネットワークドライブを割り当ててください。
そのあとで、パラメーター無しでnet useコマンドを実行して、ちゃんと接続されているかをログに残しておいた方が良いでしょう。

Qバッチファイルのタスクスケジューラでの実行について教えて下さい。

AAAのパソコンのDドライブの111というフォルダを、ネットワーク経由でBBBのパソコンのDドライブの222という共有フォルダ内に333というフォルダ内へxcopyでコピーするバッチ(backup.bat)を作ってタスクスケジューラで1日1回自動実行させようと思うのですが、うまくいきません。どうすればよいのでしょうか?

AAAパソコン:Windows2000 professional SP4
       000フォルダ内にbackup.bat(共有フォルダではないです)
       111フォルダは共有フォルダではないです
       ユーザーアカウント⇒Administrator
       パスワードはないです
      
BBBパソコン:WindowsXP professional SP2
       222フォルダは共有フォルダ
       333フォルダは222の共有フォルダの中
       ユーザーアカウント⇒バックアップ
       パスワード⇒123

バッチファイル(backup.bat)
 ↓
 net use \\BBB\222 123 /user:バックアップ
 xcopy d:\111 \\BBB\222\333\ /E/C/F/H/R/K> d:\バックアップログ.log
 net use \\BBB\222 /delete

上記バッチファイルをAAAパソコンの「タスクの実行するファイル名」に直接登録(d:\000\backup.bat)して実行させてみたのですが、タスクの詳細設定のログ表示でログを見ると、『タスクは次の終了コードで完了しました:(1).』となっていて実行されませんでした。
cmd.exe /c d:\000\backup.batでタスク登録してもだめでした。

バッチファイル(backup.bat)をダブルクリックして実行するとBBBパソコンにコピーできます。

タスク設定時の
  実行するアカウント名⇒AAA\Administrator
  パスワードはなし

よろしくお願いいたします。

AAAのパソコンのDドライブの111というフォルダを、ネットワーク経由でBBBのパソコンのDドライブの222という共有フォルダ内に333というフォルダ内へxcopyでコピーするバッチ(backup.bat)を作ってタスクスケジューラで1日1回自動実行させようと思うのですが、うまくいきません。どうすればよいのでしょうか?

AAAパソコン:Windows2000 professional SP4
       000フォルダ内にbackup.bat(共有フォルダではないです)
       111フォルダは共有フォルダではないです
       ユーザー...続きを読む

Aベストアンサー

パソコンAAAのアカウントAdministraorにパスワードを設定し、
タスク実行時にもそのパスワードを設定してみて下さい。

それで実行できれば、参考URLにあるとおり原因はセキュリティ上の仕様なのでしょう。
WindowsXP以降で発生する、と書かれているので原因が違っているかもしれませんが・・・

参考URL:http://support.microsoft.com/kb/299854/ja

Qバッチファイルでサーバーのファイルをクライアントへコピーしたい

サーバーに保存されているファイルを、
クライアントのCドライブへコピーしたい。

各クライアントにバッチファイルを配布して、
それを実行するだけでコピーされるようにしたいのです。

初心者で申し訳ないのですが、何卒よろしくお願いします。
------------------------

下記の記述ですと、普通にサーバーのCドライブへファイルがコピーされます。
しかし、コピー先はバッチファイルを実行したクライアントのローカルディレクトリにしたいのです。

copy \\サーバー名\フォルダ名\ファイル名 C:\

Aベストアンサー

>下記の記述ですと、普通にサーバーのCドライブへファイルがコピーされます。

そんなはずはありません。何かの勘違いでしょう。

>copy \\サーバー名\フォルダ名\ファイル名 C:\

だと、バッチファイルを実行したPCのC:\にコピーされます。

copy \\サーバー名\フォルダ名\ファイル名 C:
と、最後の \ を削れば、バッチファイルがあるのと同じディレクトリにコピーされます。

Qログインしない状態でネットワークドライブ接続を維持

こんにちは。
Windows7でログインして別のPCの共有フォルダをネットワークドライブとして維持することができますが、ログオフすると切れてしまいます。
ログオフしても維持する方法はありますでしょうか?
言い方を変えるとログインしない状態でネットワークドライブ接続を維持したいということになります。

もともとはサービスで動かしていたプログラムがそのPCの指定したフォルダを利用するようになっていましたが、利用するデータがディスクより大きくなる見通しになったので、プログラムを改修せずにネットワークドライブを指定することで対応したいと思っています。

よろしくお願いします。

Aベストアンサー

ネットワークドライブの割り当ては、あくまでもユーザーレベルとなります。

ログオフしたら割り当ては全て解除されます。これは避けられません。

----

ドライブ名になるネットワークストレージというと、「iSCSI」があります。
>http://network.station.ez-net.jp/client/storage/iscsi/win7/index.asp

これによって増設した領域は、PCから見てローカルHDDの様に見え、パーティション作成・フォーマット・ドライブ名割り当てが可能です。

でも、iSCSI対応NASは、かなり高いです。

----

内蔵HDDを増設して、そのドライブ名に割り当てるのが、一番安上がりだと思います…。

QDOSコマンドで共有ファイルへアクセスを行う際のパスの書き方

初めまして。

本題になります・・・

DOSコマンドで共有ファイルのアクセスを行う際のパスの書き方は、
「\\サーバー名\共有フォルダ名\ファイル名」ですが、DIRなどを行うと、認証が走って、ファイルへのアクセスが出来ません・・・全てDOSコマンド(バッチ)で完結したいのですが・・・
例えば、「dir \\サーバー名\共有フォルダ名\ファイル名」とした場合に、「ログオン失敗: ユーザー名を認識できないか、またはパスワードが間違っています。」と表示されてしまいます。
現在行いたい処理は、他サーバーの「共有ファイルのコピー&削除」、「共有フォルダの作成」です。

【環境】
コマンド実行させるサーバー:[WIN2KSEVER(admini権限/パスワード共通)]
他サーバー:[WIN2KSERVER(admini権限/パスワード共通)]

解決する方法がありましたら、お教え下さい。
お願いします。

Aベストアンサー

実際に試してみました。

net use \\サーバー名 パスワード /user:ユーザー名
dir \\サーバー名\共有フォルダ名\ファイル名

でいけました。

QXCOPYでネットワーク越しにコピーすると、「無効なドライブ指定です」と表示される

下記のようなコマンドラインをバッチにし、タスクスケジューラで定期的に起動させています。
---------------------------------------------------------------
xcopy "C:\Documents and Settings\ユーザ名\デスクトップ\バックアップ" "\\同じWORKGROUPにある共有PC\ユーザ名\バックアップ" /s /e /y /k /g /d
---------------------------------------------------------------
目的は、サーバを立てたり、アークサーブなどの高度(高価)なソフトを使わずに、簡単に必要ファイルをバックアップしておこう、ということです。

ユーザは自分のPCのデスクトップの「バックアップ」フォルダに、バックアップしておきたいファイルを保存しておき、タスク(バッチ)は共有PCの同じツリー構造のディレクトリに差分コピーするだけの単純な作りです。

どのPCからも、共有PCは同じWORKGROUP内に見えておりますし、保存先フォルダにフルアクセス可能です。

しかし、一部のユーザのPCでは、「無効なドライブ指定です」と表示され、0個のファイルがコピーされました。と表示されます。つまり失敗しています。

ただ、タスクを手動実行させたり、バッチそのものを手動実行させるとなぜか成功するのです。

そこで質問です。

1.同じバッチ、タスクを登録しているのに、なぜユーザによって成功/失敗と分かれてしまうのでしょうか?

2.タスクで自動起動するのと、手動で起動するのとでは、OS上で何か違いがあるのでしょうか?

お時間のある方、よろしくお願いいたします。

下記のようなコマンドラインをバッチにし、タスクスケジューラで定期的に起動させています。
---------------------------------------------------------------
xcopy "C:\Documents and Settings\ユーザ名\デスクトップ\バックアップ" "\\同じWORKGROUPにある共有PC\ユーザ名\バックアップ" /s /e /y /k /g /d
---------------------------------------------------------------
目的は、サーバを立てたり、アークサーブなどの高度(高価)なソフトを使わずに、簡単に必要ファイルをバックアップしておこう...続きを読む

Aベストアンサー

>1.同じバッチ、タスクを登録しているのに、なぜユーザによって成功/失敗と分かれてしまうのでしょうか?

フォルダのアクセス権がユーザによって与えられているはずなので、権限のあるユーザだと成功して、権限がないと失敗するんでしょうね。

>2.タスクで自動起動するのと、手動で起動するのとでは、OS上で何か違いがあるのでしょうか?

タスク登録の時に、どのユーザで実行するか指定できます。それを指定していないのでは?指定しないとシステムユーザで実行されます。

Qnet use の「利用不可」について

Windows2003 Server(ServerA)にて、管理者ユーザー(User1)でログインします。
コマンドプロンプトで、他のWindows2003 Server(ServerB)にnet useコマンドで、共有ドライブ(接続ユーザーは管理者権限のあるUser2)を設定します。

net use X: \\ServerB\data password /user:User2

この状態で、一度、ログオフをして、再度User1でログインして、このnet useの共有ドライブの状況を確認すると、ステータスが「利用不可」となっていて、共有ドライブが利用できません。

これは、Windowsの仕様でしょうか?回避するには、User1でnet useを行わないとダメなのでしょうか?

Aベストアンサー

net use はデフォルトで persistent:yes なので、接続は保存されます。
ただし、次回ログオンした場合にはパスワードが与えられていないので
利用不可(unavailable)になります。ログオフした後に違うユーザでの接続が
再開されたらセキュリティ上の問題になるのは明白でしょう。
(面倒くさい話なので省略しますが、このコマンドを使うと、セキュリティ・トークンが生成されるけど、それは保存されないということです)

回避するには、

1) 毎回

net use X: \\ServerB\data password /user:User2

を実行してパスワードを指定します。「無効」になっててもこのコマンドは受け付けられます。

2) 接続を保存しないようにします

/persistent:no

をつけてログアウトするたびに接続を切り、1) で毎回必要に応じてつなぎなおします

3) Shared Folder 側に、User1 のアクセス権限を与える

これが一番確実でしょう。User2 として Shared Folder へアクセスするのではなく、あくまで User1 としてアクセス可能なようにしておくということです。

net use はデフォルトで persistent:yes なので、接続は保存されます。
ただし、次回ログオンした場合にはパスワードが与えられていないので
利用不可(unavailable)になります。ログオフした後に違うユーザでの接続が
再開されたらセキュリティ上の問題になるのは明白でしょう。
(面倒くさい話なので省略しますが、このコマンドを使うと、セキュリティ・トークンが生成されるけど、それは保存されないということです)

回避するには、

1) 毎回

net use X: \\ServerB\data password /user:User2

を...続きを読む

Qバッチファイルで昨日の日付を取得

すみません、どなたか教えて下さい。

バッチファイルの記述で、昨日の日付を取得する方法を教えて下さい。
今日の日付は下記のように取得しています。

rem 日時変数の取得
for /f "tokens=1-3 delims=/" %%a in ('echo %date:~-10%') do (set YYYYMMDD=%%a%%b%%c
)

Aベストアンサー

:: ----- prevdate.bat はじめ -----
@echo off
::今日の日付を取得
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
echo 今日は、%yy%年%mm%月%dd%日です。

::1日前の日付を計算する
set /a dd=%dd%-1
set dd=00%dd%
set dd=%dd:~-2%
set /a ymod=%yy% %% 4
if %dd%==00 (
if %mm%==01 (set mm=12&& set dd=31&& set /a yy=%yy%-1)
if %mm%==02 (set mm=01&& set dd=31)
if %mm%==03 (set mm=02&& set dd=28&& if %ymod%==0 (set dd=29))
if %mm%==04 (set mm=03&& set dd=31)
if %mm%==05 (set mm=04&& set dd=30)
if %mm%==06 (set mm=05&& set dd=31)
if %mm%==07 (set mm=06&& set dd=30)
if %mm%==08 (set mm=07&& set dd=31)
if %mm%==09 (set mm=08&& set dd=31)
if %mm%==10 (set mm=09&& set dd=30)
if %mm%==11 (set mm=10&& set dd=31)
if %mm%==12 (set mm=11&& set dd=30)
)
echo 昨日は、%yy%年%mm%月%dd%日です。

echo.
pause
:: ----- prevdate.bat おわり -----

参考URL:http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html

:: ----- prevdate.bat はじめ -----
@echo off
::今日の日付を取得
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
echo 今日は、%yy%年%mm%月%dd%日です。

::1日前の日付を計算する
set /a dd=%dd%-1
set dd=00%dd%
set dd=%dd:~-2%
set /a ymod=%yy% %% 4
if %dd%==00 (
if %mm%==01 (set mm=12&& set dd=31&& set /a yy=%yy%-1)
if %mm%==02 (set mm=01&& set dd=31)
if %mm%==03 (set mm=02&& set dd=28&& if %ymod%==0 (set dd=29))
if %mm%==04 (set mm=03&& set dd=31)
if...続きを読む

QタスクがSYSTEMアカウントで実行されません。

タスクがSYSTEMアカウントで実行されません。

タスクスケジュールでバッチファイルを実行しているのですが、
タスクの実行アカウントをAdministratorにすると問題ないのですが、
SYSTEMアカウントにすると実行されません。
正確には、バッチファイルの中で、
ローカルのファイルをLAN上のファイルサーバにコピーすることができません。
Administratorアカウントでは問題ありません。
また、バッチファイルの中のコピー以外については、
SYSTEMアカウントでも実行されています。
何が原因かわかりますでしょうか。
よろしくお願いします。

Aベストアンサー

http://support.microsoft.com/kb/417903/ja
タスクスケジューラで登録したタスクで行ったネットワーク ドライブへの接続は、「実行するアカウント名」に指定したユーザー アカウントの SMB セッションで行われます。タスクが実行された時に、システムに対話形式のログオンを行っていたユーザー アカウントが「実行するアカウント名」とは異なるユーザー アカウントであった場合、あるいは対話形式のログオンが行なわれていない状態(ログオフ状態)であった場合、このタスクが作成したドライブレターの削除や再割り当てを行うことができなくなります。
http://help.support.fcm.co.jp/__Help/FOV1-00012355/FOV1-00012358/S0004A3F5-0004A3FB?WasRead=1
「ローカルシステムアカウント」で実行されているサービスはネットワークドライブが見られないようにシステムによって制限されていることです。これは、Windowsの仕組みです。

QDirコマンドでフォルダ内ファイルの合計サイズをだすには?(コマンドプロンプトにて)

いろいろ調べましたが不明な点があり、質問します。

WindowsのDOSプロンプトでdirコマンドを打つとフォルダ・ファイルの一覧が表示されますが、その中にファイルサイズが表示されています。
このサイズを合計できるコマンドはありませんか?
DIRコマンドのオプションを調べましたがそれらしいものが見当たりません。
具体的には
C:\xxx\配下に50個程度のファイルがあります。
その50個の合計サイズを知りたいです。
xxxフォルダの親フォルダにはアクセス不可です。

ずーっと悩んでいます。よろしくお願いします。

なお、OSはWindowsNTか2000で使用予定です。

Aベストアンサー

カレントドライブ、カレントフォルダを
C:\xxx\
にした状態で、

dir /s /a-d

/sパラメータででサブディレクトリすべてを検索
/a-dパラメータでディレクトリ以外のファイル(つまり属性に関係なくすべてのファイル

これを実行すると最後にファイルの個数とファイルサイズの合計を表示します。

もし、隠し属性のファイルは合計しないのであれば、

dir /s

だけで良いと思われます。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング