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 回答 (9件)

なんか違う答えを教えられているようでかわいそうなので…


現在の
xcopy "d:\MY documents\" "f:\My Documents\" /d /s
を以下のようにフォルダ名の直後の \ を取り除いてください。

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

これで正しくコピーされると思います。
    • good
    • 0
この回答へのお礼

なぜかWIN95のDOSコマンドは¥つけてても実行できていたので
そのままコピーして使ってみたら失敗でした。
ありがとうございました。うまくいきました。

お礼日時:2009/08/01 11:10

受け側にフォルダやファイルがない状態で試すと分かります。


(初回のコピーという意味です)
「xcopy "d:\MY documents" "f:\My Documents" /d /s」
ですと、フォルダのコピーなのかファイルのコピーなのかを
確認する表示が出るため、バッチファイルなどでは処理が止まります。

受け側に「\」を付けることで、フォルダのコピーであることを
明示的に指定することができるのです。
(もちろん全て試してからお話ししていますよ)
    • good
    • 0

受け側の「\」まで省略したらファイルかディレクトリかを


聞いてきてうっとうしいんじゃないかな?

この回答への補足

受け側の¥省略しても実行できてます。
実際に試してから回答するようにしてくださったほうがありがたいです。

補足日時:2009/08/01 11:29
    • good
    • 0

C:\>Robocopy /?



使用法:: ROBOCOPY コピー元 コピー先 [ファイル [ファイル]...]
[オプション]
-----------------------------------
↑こう言うのもあります。
    • good
    • 0
この回答へのお礼

ありがとうございました。
今回は下記の方々の方法でできたのでまた使ってみます。

お礼日時:2009/08/01 11:29

捕捉です。



N0.3さん、No.4さんの回答でもうまく行くことを確認しました。

大変失礼しました。。。

ダブルクォーテーションが使えるのであれば、私の回答より使いやすいかもしれませんね。
なので、私も
 xcopy "d:\my documents" "f:\my documents" /d /s

をお奨めします。m(_~_)m
    • good
    • 0
この回答へのお礼

ありがとうございました。
DOS時代だと、半角8文字で無ければファイル名がつけられなかったので考えることはありませんでしたが、WINになってからはファイル名制限がなくなっている(?もしかしてある?)のでフォルダ名をつけるときは内容のわかりやすい日本語でつけたいです。
すると、バックアップもそのフォルダ名を使えたほうが便利と思います。
kaz2014さんも""を活用されればWINでもDOSがもっと活用できるかと思います。(質問しといてえらそうにすみません。)

お礼日時:2009/08/01 11:25

なんか皆さん、書いていることがバラバラのようなんですが・・・(^-^;


ほんとにその構文で成功しました?

ダブルクォーテーションは、DOSコマンドでは使わないのが得策です。
なので、FドライブにすでにMy Documentsフォルダがあることを前提とすれば、

xcopy d:\mydocu~1 f:\mydocu~1 /s /d

でコピーできました。
ちょっと反則技かもしれませんが、DOSでは半角英数文字で8文字以内という命名規則があり、これの名残を逆に使う方法が一番手っ取り早いと思います。
他のフォルダでも同様に、
・スペースは省略して半角6文字(全角なら3文字)プラス[~1]を付けて、合計8文字のフォルダ名を作る
のがコツです。
前半の6文字が同じフォルダが2つ以上ある場合は、チルダの後ろの番号を増やし、~2、~3、・・・
とします。
    • good
    • 0

送り側の末尾に「\」が要りません。


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

当然ですけど今回の場合は送り側と受け側のパラメータを「""」で囲まないといけません。
    • good
    • 1
この回答へのお礼

なぜかWIN95のDOSコマンドは¥つけてても実行できていたので
そのままコピーして使ってみたら失敗でした。
ありがとうございました。うまくいきました。
受け側にも¥なくても実行できてます。

お礼日時:2009/08/01 11:17

>d:\MY documents\



Y documentsは、dドライブの直下に作成されているのでしょうか?
f:\My Documentsも同様です。

それと \s というパラメータは有りましたか?当方、XPのコマンドプロンプトで見る限りないですが。

この回答への補足

>d:\MY documents\
この通りです。dの直下に作成しています。
\Sではなく/sです。
サブフォルダ以下もコピーする場合のスイッチです。

補足日時:2009/08/01 08:32
    • good
    • 0

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



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

""を外してみて下さい。
USBメモリがちゃんとみえてるか、dir f:\とかで確認。

この回答への補足

""は省略してみましたができませんでした。
ちなみにfはUSBメモリじゃなくて外付けHDです。
フォルダ名に空白を含むときは""で囲むというルールがあると。
説明不足でしたが、WIN95ではこのコマンドで実行していますがXPでやろうとしたらできないという状況です。

補足日時:2009/08/01 08:28
    • good
    • 0

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

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

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

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

Qxcopyでのバッチコピー方法でコピーできない

こんにちは。

xcopyを使って、ネットワーク上のファイルを、同じくネットワーク上の別フォルダにコピーしたいと思っています。

ローカルで下記のコードを書きました。

xcopy C:\abc.txt D:\

これは問題なく、Dドライブ直下にデータがコピーできました。

次に、ネットワーク上のあるファイルを指定してコピーするコードを書きました。

xcopy \\mynetwork\abc.txt \\mynetwork\something\
or
xcopy "\\mynetwork\abc.txt" "\\mynetwork\something\"

これは一応はバッチ画面は起動されるのですが、正しくコピーをできませんでした。つまりコピーは失敗におわりました。

何が間違っているでしょうか?

やりたい事は、単一のテキストファイルを、ある特定のフォルダにコピーして、既に同じファイル名があれば上書きするといったことをやりたいです。

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

Aベストアンサー

フォルダ"\\mynetwork\something\"は存在してますか?

xcopyは /s/eオプション付けて実行したほうが良いかも

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上で何か違いがあるのでしょうか?

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

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
でいいはず。

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

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

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

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

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

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

Aベストアンサー

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

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

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

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

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

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 ...続きを読む

Qバッチファイル 文字列にスペースがある場合

for /f %%A in ('dir /b /s c:\a aa*.pdf') do copy "%%A" D:\

これはcドライブのa aaというフォルダ名の中を検索するコードですが、
フォルダ名にスペースがあるため、うまく動きません。

"a aa"のように""で囲ってみましたが、駄目でした。

どうすれば良いのか、教えていただきたいので、お願いします。

Aベストアンサー

for /f %%A in ('dir /b /s c:\"a aa"\*.pdf') do echo copy "%%A" D:\
のようにecho でどのようなコマンドが実行されているか確認しましょう。

この記述ではdirコマンドで表示されるパスの中に空白があるため %%A には空白までの文字列しか代入されません。
以下のように修正して試してみてください。

for /f "delims=" %%A in ('dir /b /s c:\"a aa"\*.pdf') do copy "%%A" D:\

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

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

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

初めまして。

本題になります・・・

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

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

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

Aベストアンサー

実際に試してみました。

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

でいけました。

Qbatファイルの結果をテキストに吐き出すには?

以下のようなWindowsユーザーのパスワード変更batの結果(正常に出来たかどうか?)をCドライブに吐き出したいのですが、どうbatファイルを書き換えればよいでしょうか?
(とりあえず以下の内容でbatをたたいたのですが、うまく結果が出ません。。。)

henkou.bat
--------------------------------------
net user "test user1" ps123456 /domain
net user "test user2" ps456789 /domain
henkou.bat > c:\henkou結果.txt
pause
--------------------------------------

吐き出されたhenkou結果.txt
--------------------------------------
C:\>net user "test user1" ps123456 /domain
--------------------------------------

DOS画面(吐き出したいもの)
--------------------------------------
C:\>net user "test user1" ps123456 /domain
コマンドは正常に終了しました。

C:\>net user "test user2" ps456789 /domain
コマンドは正常に終了しました。

C:\>henkou.bat 1>c:\henkou結果.txt
--------------------------------------

以下のようなWindowsユーザーのパスワード変更batの結果(正常に出来たかどうか?)をCドライブに吐き出したいのですが、どうbatファイルを書き換えればよいでしょうか?
(とりあえず以下の内容でbatをたたいたのですが、うまく結果が出ません。。。)

henkou.bat
--------------------------------------
net user "test user1" ps123456 /domain
net user "test user2" ps456789 /domain
henkou.bat > c:\henkou結果.txt
pause
--------------------------------------

吐き出されたhenkou結果.t...続きを読む

Aベストアンサー

henkou.bat
--------------------------------------
@ECHO OFF

IF NOT EXIST %temp%\Redirect.txt GOTO REDIREXEC

@ECHO ON

net user "test user1" ps123456 /domain
net user "test user2" ps456789 /domain

@ECHO OFF

GOTO END

:REDIREXEC

ECHO REDIRECT > %temp%\Redirect.txt

CALL TEST.BAT > c:\henkou結果.txt

DEL %temp%\Redirect.txt

PAUSE

:END
--------------------------------------

こんな感じでどうでしょうか。


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

人気Q&Aランキング

おすすめ情報