![Windows エクスプローラーからファイルを削除できますが、バッチ ファイルからは削除できません](https://rvso.com/image/1575986/Windows%20%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%8B%E3%82%89%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%89%8A%E9%99%A4%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E3%83%90%E3%83%83%E3%83%81%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8B%E3%82%89%E3%81%AF%E5%89%8A%E9%99%A4%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93.png)
Windows (Windows 7 を使用しています) のバッチ ファイルで、/f および /q フラグ付きの「del」コマンドを使用してネットワークの場所からファイルを削除しようとすると、「アクセスが拒否されました」というメッセージが表示され、ファイルは削除されません。ただし、Windows エクスプローラーを使用して手動でファイルを正常に削除できます。
私は個人ユーザー アカウントでバッチ ファイルを実行していますが、これは Windows エクスプローラーから手動で削除する場合と同じ権限を使用するはずです。
削除しようとしているファイルには特別なものはありません。これは、自動化コードの一部がこの場所からファイルを削除できないことに気付いた後にテスト用に作成した空のテキスト ファイルです。
この問題は特定のネットワーク共有にのみ発生し、他の場所では、Windows バッチ ファイルを使用して問題なくファイルを削除できます。
さらに、バッチ ファイルを使用して、問題のネットワークの場所にテキスト ファイルを問題なく作成できます。削除コマンドでのみ、「アクセスが拒否されました」という問題が発生します。
私のアカウントは、問題のフォルダを含む共有へのアクセス権を持たないグループに属していますが、共有上のフォルダへのアクセス権は持っています。このネットワークの場所のセキュリティの設定方法は次のとおりです。
\\Server\Share\Folder1
\\Server\Share\Folder2
私のアカウントが属するグループには、Folder1 と Folder2 への「変更」アクセス権がありますが、共有アクセス権はありません。
編集: 要求された問題のコマンド ライン:
del \\Server\Share\Folder\TEST_FILE.txt /F /Q
この問題の原因となっている可能性のあるネットワーク/セキュリティ現象を知っている人はいますか? また、どうすれば修正できますか?
答え1
なぜこのようなことが起こるのかはわかりませんが、del
コマンドが UNC パス名を適切にサポートしていないのではないかと思われます。
これを簡単に再現することができ、マップされたドライブを使用するとエラーは解消されました。
del \\share\folder\file.txt
:: got an error 'Access denied'
net use Z: \\share\folder
del Z:\file.txt
:: file deleted successfully
不思議なことに、他のコマンドは機能しました。たとえば、サブディレクトリを作成し、そこにファイルを移動してから、サブディレクトリを削除することができました。
mkdir \\share\folder\trash
move \\share\folder\file.txt \\share\folder\trash
rmdir /s /q \\share\folder\trash
答え2
コマンド 'del \y\x' は 'y' 内で 'x' に一致するすべてのファイルを検索するため、 'y' でリストディレクトリ アクセスが必要になります。
ネットワーク共有に関しては、取得するアクセス権は、共有の権限とアクセスするオブジェクトの権限の共通部分です。ファイルでは書き込みが許可されているが、共有では許可されていない場合は、書き込みできません。