問題は、32ビットプロセスから64ビットの実行可能ファイルを起動しようとしているためです。 スクリプトを起動するpythonまたはcmdプロンプトが32ビットの場合、完全パスなしでdefrag.exeだけを指定すると、32ビットモードでdefrag.exeが起動します。
cleanmgrは何も返しません。空の文字列を戻すだけです。以下 てみコード、それはpythonの32ビットまたは64ビットのターゲットの64ビットOSの両方
import os
print('running disk defragmentation, this might take some time ...')
# you might wanna try out with %systemroot%\sysnative\defrag.exe /A first,
# Else, it might really take some time for defragmentation
if sys.maxsize > 2**32:
defragmentation=os.popen('defrag.exe /C').read() # run from 64-bit
else:
defragmentation=os.popen(r'%systemroot%\sysnative\defrag.exe /C').read() # run from 32-bit
print(defragmentation)
print('running disk cleanup, this might take some time ...')
clean=os.popen('cleanmgr.exe /sagerun:1').read() # should works in both 32-bit and 64-bit
print(clean) # cleanmgr run from gui and don't return anything, this should be empty
ための作品ではなく、サブプロセスを使用することを提案する必要があり、os.popenは正確に何
import sys
import subprocess
if sys.maxsize > 2**32:
run_cmd = 'defrag /C' # 64-bit python/cmd
else:
run_cmd = r'%systemroot%\sysnative\defrag /C' # 32-bit python/cmd
output, err = subprocess.Popen(run_cmd, stdout=subprocess.PIPE, shell=True).communicate()
print(output)
if err:
print('process fail, error {}'.format(err))
else:
print('process sucess')
# repeat with run_cmd = 'cleanmgr /sagerun:1'
を推奨されていませんあなたは期待している? – spectras
あなたはこれらのスクリプトを書いていましたか? –
@spectras - バックグラウンドでディスクデフラグとディスククリーンアップを実行する必要があります。 – user2926827