親子におすすめの新型プラネタリウムとは?

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

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

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

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

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

そこで質問です。

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

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

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

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

A 回答 (1件)

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



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

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

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

この回答への補足

ご回答ありがとうございます。

1.ですが、権限設定は、コピー先フォルダにフルアクセス可能になっています。逆に、他のユーザからはアクセスできないようになっています。

試しに、ネットワーク越しに該当フォルダを参照、書き込み、削除などを行なっても、問題なくできますので、権限はあるはずです。

気になるのが、すべてのユーザがActiveDirectoryで管理されている、ということでしょうか。

2.ですが、タスク登録は、各パソコン保有のユーザによって行なわれます。そこでパスワード設定も行なっています。
(パソコンに弱い人が多いので、タスクの登録もバッチで行い、ユーザは、ユーザIDとパスワードを入力すればいいように自動化しています)

自動化、といっても下記のようなバッチで、パスワード入力させているだけですが。。。
schtasks /Create /tn "BackUp" /tr "C:\TOOLS\BACKUP\BACKUP.BAT" /sc daily /st 12:10:00

最後に、もしかして?という事項として、10数名のパソコンから、同一時刻に書き込みに行くので、共有パソコン側の処理が追いついてないのかな?という気がします。

本日は自分のパソコンのみ、時刻をずらして実行させてみようかな、と思っています。

その他アドバイス、チェックポイントがございましたらよろしくお願いいたします。

補足日時:2009/09/16 08:36
    • good
    • 0
この回答へのお礼

起動時刻をずらせて自動実行させたところ、正常に処理されました。
しかし、他のメンバと同じ時刻に再設定して実行させると、やはり
「無効なドライブ指定です」
が表示され、コピーされません。

この現象を鑑みますと、やはり同時に接続に行くことに無理があるのかな?と考え、色々調べると、XPはSP2から、同時接続数が10に設定してあるらしく、レジストリ変更くらいでは設定変更不可能のようです。

これはお手上げですね。

お騒がせいたしました。

また、どうもありがとうございました。
勉強になりました。

お礼日時:2009/09/16 15:17

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

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

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

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

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

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

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

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

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

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

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

Aベストアンサー

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

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

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

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

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

QxCopyコマンドでネットワークごしのファイルはコピーできるのでしょうか

Windows2000にてxCopyにてファイルのバックアップを
考えているのですが、バックアップのファイルがある場所が
ネットワーク上に存在しております。
そのような場合、xCopyコマンドは使用できないのでしょうか

すみませんが宜しくお願いいたします。

Aベストアンサー

>xCopyコマンドは使用できないのでしょうか

普通に使えますよ。
/Zオプションを指定した方が幸せな気がしますが、
基本的に、ローカルドライブと同様の指定でOkです。
(マウントしてドライブレターで指定しても良いし、UNC(\\hoge\share)指定でもOK)

QDOSコマンドでファイルをコピーできない。

xcopy "d:\MY documents\" "f:\My Documents\" /d /s
上記コマンドを記述したバッチファイルを実行すると
C:\Documents and Settings\倉庫番.PC.000\デスクトップ>xcopy "d:\MY documents\" "f:\My Documents\" /d /s
無効なパスの指定です
0 個のファイルをコピーしました

C:\Documents and Settings\倉庫番.PC.000\デスクトップ>pause
続行するには何かキーを押してください . . .

とエラーがでます。なぜでしょうか?
d:\はノートPCのdドライブ、fはUSB接続したHDです。
更新したファイルだけをバックアップしたいのですが・・・
宜しくお願いします。

Aベストアンサー

なんか違う答えを教えられているようでかわいそうなので…
現在の
xcopy "d:\MY documents\" "f:\My Documents\" /d /s
を以下のようにフォルダ名の直後の \ を取り除いてください。

xcopy "d:\MY documents" "f:\My Documents" /d /s

これで正しくコピーされると思います。

Qバッチファイルのコピーで

コマンドバッチで、ネットワーク上にある共有フォルダ内にあるファイルのコピーを行おうと思っているのですが、
「Logon failure : unknown user name or bad password」と出てしまい上手く出来ません。
コマンドでコピーの時にパスワードを記述とか出来るのでしょうか?出来るなら方法などを教えてきただきたく思います。

ものすごい簡単な質問なのかもしれませんがよろしくお願いします。

Aベストアンサー

そのコピーコマンドは、UNCパスのネットワークドライブ[から/に]行っているのかな?

例:
copy c:\autoexec.bat \\server\share\

そのマシン(server)の共有に、自動でアクセスできないのなら、先に共有に繋げておこう。


net use \\server\share password /user:username ←ユーザ名とパスワードを指定して接続
copy c:\autoexec.bat \\server\share\ ←ファイルコピー
net use \\server\share /delete ←切断

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

初めまして。

本題になります・・・

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

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

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

Aベストアンサー

実際に試してみました。

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

でいけました。

QXCOPYで指定したフォルダとファイルをコピーしたい

C:\AAAフォルダとC:\AAA以下のファイルをコピーしたくて、
XCOPY C:\AAA D:\BBB /E
とすると、コピー先のD:\BBBにはAAAフォルダにあるファイルはコピーされるのですが、AAAフォルダそのものはコピーされません。
XCOPY C:\ D:\BBB /E
とすればコピーできるのですが、そうするとC:\のほかのフォルダもコピーされてしまいます。
EXCLUDEオプションを使うには指定するファイルが多いため、あまり使いたくありません。(コピーする前にMDでコピー先にAAAフォルダを作成するのもなるべく避けたい)
知っている方がいらしたら教えて下さい。

Aベストアンサー

xcopy /e C:\AAA D:\BBB\AAA
複数ファイルのコピーでコピー先が存在しないとき、ファイル名と見なすかディレクトリ名と見なすか聞いてきます。

応答を聞かれるのが嫌なら
echo d | xcopy /e C:\AAA D:\BBB\AAA
でいいはず。

Qxcopyで特定のファイルのみをコピーする方法

xcopyもしくはcopyコマンドを使用し、ディレクトリ内の特定のファイル(複数)を
コピーするにはどのようにしたら良いのでしょうか?

特定のファイルの数が多すぎるため、一行ずつコマンドを書くのは手間が掛るため、
何か良い方法があれば教えて頂きたいと思います。

excludeオプションを使用すれば特定のファイルを除外できるようですが、
反対の意味の特定のファイルのみをコピーしたいです。

例)
c:\test内は以下のファイルがあります。
・aaa.txt
・bbb.txt
・ccc.txt
・ddd.txt
・eee.txt

これらのファイルの内、bbb.txtとddd.txtとeee.txtをコピーしたいです。

Aベストアンサー

よくこんな感じでやってました。
バッチ用コマンドですがバッチファイルを作らずコマンドラインで実行させます。
( コピー先フォルダを C:\distdir\ とします。)

コマンドラインでこれ
for %a in ( bbb.txt ddd.txt eee.txt ) do xcopy c:\test\%a c:\distdir
を実行させると、

カッコ ( ) の中からファイル名を1個拾っては %a に代入し do 以下を実行します、
つまり以下の3コマンドに展開し1個ずつ実行します。
xcopy c:\test\bbb.txt c:\distdir
xcopy c:\test\ddd.txt c:\distdir
xcopy c:\test\eee.txt c:\distdir

尚、この場合は拡張子がいずれも txt なので、以下のように書くと文字数を若干減らせます。
1コマンドラインの文字数は限りがあるので、ファイル数が多くて他の部分を縮めたい時に有用です。
for %a in ( bbb ddd eee ) do xcopy c:\test\%a.txt c:\distdir

ところで、文法を正確に記憶してなくて恐縮ですが、
Windows 配下のコマンドプロンプトが備えるコマンドでは、
予め対象のファイル名リストをテキストファイルで作っておき、
そこからファイル名を1個ずつ拾ってコマンド実行させる事が可能です。

よくこんな感じでやってました。
バッチ用コマンドですがバッチファイルを作らずコマンドラインで実行させます。
( コピー先フォルダを C:\distdir\ とします。)

コマンドラインでこれ
for %a in ( bbb.txt ddd.txt eee.txt ) do xcopy c:\test\%a c:\distdir
を実行させると、

カッコ ( ) の中からファイル名を1個拾っては %a に代入し do 以下を実行します、
つまり以下の3コマンドに展開し1個ずつ実行します。
xcopy c:\test\bbb.txt c:\distdir
xcopy c:\test\ddd.txt c:\distdir
xcopy c:\test\eee.txt ...続きを読む

Qbatである文字列内に特定の文字列が含まれているか確認したい

batファイルの中である変数「abc」の中に「test」という文字が含まれていたら○○を行なうという分岐を作成したいのですが、どのように行なえばよいのでしょうか?

そのまま、ずばりのお答えお待ちしております。

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

Aベストアンサー

大文字小文字を区別しなくていいなら、

if not "%abc:test=%" == "%abc%" echo 含まれていた

区別するなら、

echo %abc% | find "test" >NUL
if not ERRORLEVEL 1 echo 含まれていた

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バッチファイルで昨日の日付を取得

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

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

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&Aを見た人がよく見るQ&A

人気Q&Aランキング