![](/img/trans.png)
[英]Printing output of python script to Windows console, when running via batch file
[英]How to print output of python script to Windows console, when running via batch file?
我一直在向后和向前寻找答案,但无济于事。 我在 Windows 上工作,并在 Python 中编写了一个脚本,它将源文件复制到其他备份目的地(Dropbox 文件夹和远程驱动器)。
import os, shutil
source = r'C:\****\****\Accounts_Passes.kdbx'
file_name = source.split('\\')[-1]
cloud_backup = r'C:\****\Dropbox\Backup'
pendrive_backup = r'I:'
def backup (source, destination):
if not os.path.exists(destination):
os.mkdir(destination)
shutil.copy(source, destination)
if __name__ == '__main__':
if os.path.exists(pendrive_backup.split('\\')[0]):
backup(source, pendrive_backup)
print(f"{file_name} file backed up to pendrive!")
else:
print(f"Pendrive disconnected, couldn't backup {file_name} to it")
backup(source, cloud_backup)
print(f"{file_name} file backed up to Dropbox!")
print("DONE!")
我希望它通过 Windows 任务计划程序运行它,所以我创建了一个 .bat 文件。
echo off
echo Backup launched
timeout /t 5
start "C:\Program Files\Python38\python.exe" "C:\*****\Backup Scripts\Keypass_backup.py"
pause
问题是当我通过.bat 文件运行它时,Python 脚本的 output 没有在控制台中显示,这是我强烈要求的。 关于如何通过批处理文件打开命令行、显示 Python 脚本的打印输出的任何建议都会很棒。
谢谢,
麦克风
我的建议是您更正批处理文件的内容。
您应该从您提供的内容的第4
行start
删除。
@Echo Backup launched
@%__AppDir__%timeout.exe /T 5 /NoBreak
@"%ProgramFiles%\Python38\python.exe" "C:\*****\Backup Scripts\Keypass_backup.py".
@Pause
如果您想忽略该建议并使用start
,那么正确的语法是:
@Start "" "%ProgramFiles%\Python38\python.exe" "C:\*****\Backup Scripts\Keypass_backup.py".
如果没有该语法,您的start
命令实际上是使用C:\Program Files\Python38\python.exe
作为“窗口标题”,并运行命令"C:\*****\Backup Scripts\Keypass_backup.py"
,这不是你想要的。
如果您打开命令提示符 window,请键入start /?
或help start
,然后按ENTER ,您应该会看到第一组双引号用于定义标题。
此外,您应该能够通过任务调度程序运行"C:\Program Files\Python38\python.exe"
,使用"C:\*****\Backup Scripts\Keypass_backup.py"
作为参数,没有根本需要一个批处理文件。 你甚至可以通过任务调度程序运行cmd.exe
来做到这一点,使用/K
, "C:\Program Files\Python38\python.exe"
和"C:\*****\Backup Scripts\Keypass_backup.py"
也是它的 arguments。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.