[ad_1]
こんにちは!
以下のスクリプトがあります。 基本的に、特定のディレクトリ内のファイルをループして印刷し、別のディレクトリに移動します。
このスクリプトを実行する .bat ファイルがあり、手動で実行すると必要なとおりに動作します。
ただし、.bat ファイルを実行するようにタスク スケジューラを設定すると、実際の印刷を除き、必要に応じてスクリプトが実行されます。 デフォルトのプリンターを設定し、ファイルを移動し、最後にプリンターを別のデフォルトに設定します。
ユーザー アカウントをネットワーク管理者に設定しました。このアカウントにはクライアント コンピューターのローカル管理者権限があります。 スケジュールでは、最高の権限が有効になっています。
何をチェックすべきかについてのアイデアは大歓迎です!!
import os import time import shutil import win32print # Insert the directory path in here path = r'\\tsl-files\Share\Posting Journal\Queue' auditpath = r'\\tsl-files\Share\Posting Journal\Log' # Extracting all the contents in the directory corresponding to path l_files = os.listdir(path) # Iterating over all the files for file in l_files: # Instantiating the path of the file file_path = f'{path}\\{file}' win32print.SetDefaultPrinterW("Lanier mp 4055") # Checking whether the given file is a directory or not if os.path.isfile(file_path): try: # Printing the file pertaining to file_path os.startfile(file_path, 'print') print(f'Printing {file}') # Sleeping the program for 5 seconds so as to account the # steady processing of the print operation. time.sleep(10) shutil.move(f'{path}\\{file}', f'{auditpath}\\{file}') except: # Catching if any error occurs and alerting the user print(f'ALERT: {file} could not be printed! Please check\ the associated softwares, or the file type.') else: print(f'ALERT: {file} is not a file, so can not be printed!') win32print.SetDefaultPrinterW("Generic / Text Only") print('Task finished!')
私が試したこと:
スクリプトで指定されたファイルの場所はネットワークの場所であるため、スクリプトを複製し、C ドライブ上のフォルダーから直接実行するように新しいタスク スケジューラを設定しました。 まったく同じことを行います。 おそらく、bat ファイルがネットワーク上の場所で開かれているため、代わりにその場所から PDF Adobe Reader を起動しようとしているのではないかと考えていました。 しかし、前述したようにローカルで試してみると、それが間違いであることが判明しました。
他に何をテストすればよいかわかりません。 アイデアは大歓迎です!!
Python 3.12.0
Windows 10 プロ
解決策 1
NetworkService (「ネットワーク管理者」アカウントなどというものはありません) がプリンターにアクセスできるかどうかは思い出せませんが、アクセスできないと思います。
タスクを実行する目的で通常のユーザー アカウントを作成し、必要に応じてファイル システムへのアクセス許可を付与すると、そのアカウントがプリンターにアクセスできるようになります。 代わりにこのアカウントを使用するようにタスクを設定します。 アカウントの「パスワードの有効期限が切れる」を忘れずにオフにしてください。
NetworkService は最小限のアクセス許可があり、パスワードがないマシン アカウントであるため、どうしても必要な場合を除き、使用しないでください。
[ad_2]
コメント