問題タブ [shfileoperation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-2.7 - python win32com shell.SHFileOperation - 実際に削除されたファイルを取得する方法はありますか?
私が維持しているコードで、私は遭遇しました:
(Python27\Lib\site-packages\win32comext\shell\
win32comextに注意してください)には、shell.pyd
バイナリがあります。
- 削除の shell.SHFileOperation の戻り値は何ですか (
operation=FO_DELETE
上記の呼び出しで)? shell.pyd のコードはどこにありますか? - この戻り値から実際に削除されたファイルのリストを取得できますか、または後で手動で確認する必要がありますか?
編集: 受け入れられた回答の回答 Q1 - のソースpywin32-219\com\win32comext\shell\src\shell.cpp
を見ると、削除に失敗したファイルに関する情報を返さないように見えるSHFileOperationstatic PyObject *PySHFileOperation()
に委任されていることがわかります。したがって、Q2 への回答は「いいえ」であると思います。
winapi - SHFileOperation で排他的にロックされたファイルを無視する
私は Windows 7 Professional を使用SHFileOperation()
しており、あるフォルダーの内容を別のフォルダーの内容に再帰的にコピーするために使用しています。ただし、ロックされたファイルがあります (アプリケーションによって排他的に開かれています)。スキップする必要がありますが、SHFileOperation()
このファイルをコピーしようとすると 0x20 が返されます。
ファイルのコピー操作中にこのファイルをスキップするにはどうすればよいですか?
更新:これはコードです:
python - WindowsでPython os.removeを使用して接続されたファイルを削除しても安全ですか
Windows では、ファイル filename.htm を作成すると、必要に応じて関連するフォルダー filename.files が同時に作成されることがあります。filename.htm を削除すると、関連するフォルダーも同時に削除されます。
これによると、Windows Explorerの挙動です。それは「接続されたファイル」と呼ばれます。これは SHFileOperation について説明します。
Python で動作を模倣できますか? Pythonos.remove()
またはwin32api.DeleteFile()
同じことをしません。
ファイルとフォルダーの両方を残酷に削除すると、Windows エクスプローラーが混乱するのではないかと心配しています。または、レジストリにゴミを残しますか?
winapi - Windows 10 1709 で SHFileOperation が大幅に遅くなる
1709 に更新されたシステムでは、SHFileOperation を使用したフォルダーの削除が非常に遅いことがわかっています。ユニバーサル Windows アプリに関連して、これを引き起こしている何かがあるようです。
このコード:
「C:\Jobs\Job1」のようなパス (はい、二重に null で終了) をフォルダー内の少数のファイル (たとえば 2 または 3) に渡し、Windows 7 および Windows 10 1511 でミリ秒単位で実行されます。 Windows 10 では 1709 1 ~ 3 秒かかります。
Visual Studio 2013 の [出力] ウィンドウに表示されるのは、SHFileOperation が呼び出されてから戻る前に、これらのメッセージのうちの 3 つまたは 4 つです。
onecoreuap\shell\windows.storage\sharedstoragesources\util.cpp(2831)\windows.storage.dll!7650BF24: (呼び出し元: 765D88E4) ReturnHr(1) tid(1bb0) 80070490 要素が見つかりません。
これは、VS2013 でビルドされた Win32、x86 アプリです。これは、18 か月以上にわたって出荷されてきたリリースで発生します。要約すると、バージョンは 1511 と Windows 7 で期待どおりに実行されますが、最後の 2 つの Windows 10 更新では遅すぎます。どういうわけか、ユニバーサル Windows アプリの DLL と絡み合っているようです。どうすればこれを回避できますか?