web-dev-qa-db-ja.com

バッチを使用してネットワークドライブからC:またはD:ドライブにコピーする

マップされたネットワークドライブからローカルドライブにファイルをコピーするバッチファイルの実行に問題があります。

これが私が使用しているバッチコードです(すべてが完璧になるまで、運用環境でコマンドを実行したくないため、現時点では低レベルのフォルダーにあります)。

echo off
cls

echo Would you like to do a backup?

pause

copy "\\My_Servers_IP\Shared Drive\FolderName\*" C:TEST_BACKUP_FOLDER

pause

そして私も試しました:

echo off
cls

echo Would you like to do a backup?
pause

copy "\\My_Servers_Name\Shared Drive\FolderName\*" C:TEST_BACKUP_FOLDER

pause

上記のどちらのコマンドでも、ファイルをC:TEST_BACKUP_FOLDERにコピーするように要求した場合は、ファイルをコピーしませんが、同じ正確な構文を使用してローカルドライブからコピー要求を行った場合、この構文では問題なく機能し、直接上記のフォルダに問題はありません。

最も奇妙な部分は、コピーしたいファイルがコマンドラインで認識されていることを示すcmd出力であり、最後に「1個のファイルがコピーされました」と表示されているが、そのフォルダーには何もコピーされていないことです。だから、私はコピー要求の宛先が正しいことを知っています。それは、どのファイルがフォルダーにあるかさえ認識し、名前が表示されるためです。また、先ほど述べたように、C:の宛先も正しいです。ローカルPCでそのアドレスを使用すると、毎回そのフォルダーにコピーされるためです。これは明らかにネットワークドライブと関係があります。最初は許可の問題かと思ったのですが、今試しているフォルダは、社内の誰でもアクセスでき、r/w特権を持つ共有マップドライブです。パブリック共有ドライブでこのような問題が発生するのはなぜですか?

他に提案はありますか?

5
JacobSM1984

すべてのファイルをTEST_BACKUP_FOLDERという単一のファイルにコピーしています

これを試して:

md TEST_BACKUP_FOLDER
copy "\\My_Servers_IP\Shared Drive\FolderName\*" TEST_BACKUP_FOLDER
8
foxidrive

次の変更を行うだけです

echo off
cls

echo Would you like to do a backup?

pause

copy "\\My_Servers_IP\Shared Drive\FolderName\*" C:\TEST_BACKUP_FOLDER

pause
3
Hasan

これは、セキュリティチェックが原因である可能性があります。 このスレッド が役立つ場合があります。

2つの提案があります。1つはpushdに関するもので、もう1つはレジストリの変更に関するものです。最初のものを使用することをお勧めします...

1
Markus

最も重要なことは、ドライブをマウントする必要があることです

Net Use z: \\yourserver\sharename

もちろん、バッチファイルを実行するアカウントに、共有にアクセスする権限があることを確認する必要があります。スケジュールされたタスクを使用してこれを実行している場合は、タスクを選択してアカウントを選択し、次のことができます。

  • プロパティを右クリック
  • 一般タブをクリックします
  • アカウントを変更

「タスクを実行するときは、次のユーザーアカウントを使用します。」これはWindows 7の場合であり、Windowsのバージョンによって若干異なる場合があります。

次に、次の変更を加えてバッチスクリプトを実行します。

copy "z:\FolderName" "C:\TEST_BACKUP_FOLDER"
0
manish kumar