python - 通过批处理文件运行时,如何将 python 脚本的输出打印到 Windows 控制台?
问题描述
我一直在向后和向前寻找答案,但无济于事。我在 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 脚本的输出不会显示在我强烈要求的控制台中。关于如何通过批处理文件打开命令行,显示 Python 脚本的打印输出的任何建议都会很棒。
谢谢,
迈克
解决方案
我的建议是您更正批处理文件的内容。
您应该从您提供的内容start
行中删除。4
@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"
,这不是您想要的。
如果您打开命令提示符窗口,键入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"
作为它的参数来做到这一点。
推荐阅读
- python - 如何在循环中使用变量,用于嵌套列表
- asp.net-mvc - 使用 cshtml razor 从另一个控制器获取值
- swift - 无法从 Catalina 上的 Today 小部件启动包含应用程序
- r - 如何对由多个分组变量分隔的个体进行多个变量的方差分析?
- php - mgp25 Instagram-API 无法再上传
- java - 为什么我的 while 循环会导致 java 控制台不出现?
- java - HashTable 和 LinkedList 的 LinkedHashSet 实现?
- c - 在 int 列表中弹出不需要的元素
- go - 无法处理 goroutine 死锁
- reactjs - 如何动态选择 Material-UI 自动完成组件中的默认选项?