【问题标题】:unable to run python script from Batch file无法从批处理文件运行 python 脚本
【发布时间】:2018-02-11 10:01:46
【问题描述】:
您好,我希望从我编写的批处理文件中运行 python 脚本,(我没有写)。
我有两个问题:
-
在命令提示符下运行命令可以正常工作,但从批处理文件中它会失败并且没有错误消息; python 脚本会创建一个输出文件,但在运行批处理文件时不会创建它。
@echo off
SET /P PrePRD=Enter the Pre Production file name:
SET /P PostPRD=Enter the Post Production file name:
Set /p IdColumn= Enter the Name of the ID column (ID - Original Input):
cmd /k "cd /d C:\CSVComparison"
C:\CSVComparison\csv_diff.py -src "%PrePRD%" -dest "%PostPRD%" -keys "%IdColumn%"
-
我希望打开 python 使用Notepad++ 创建的输出文件,但我不确定它是否会以这种方式工作:
start C:\Program Files (x86)\Notepad++\notepad++.exe C:\CSVComparison\results_details.json
notepad++.exe C:\CSVComparison\results_details.json
谢谢,
【问题讨论】:
标签:
python
batch-file
notepad++
【解决方案1】:
1) 你用cmd /k 启动另一个实例,但是下面的命令在原始实例中执行(我猜,你希望它在第二个实例中执行)。在原始实例中执行它(根本没有cmd /...;你可能需要call它)
pushd "C:\CSVComparison"
call "C:\CSVComparison\csv_diff.py" -src "%PrePRD%" -dest "%PostPRD%" -keys "%IdColumn%"
popd
或start在另一个窗口中:
start /d "C:\CSVComparison" "csv_diff" "C:\CSVComparison\csv_diff.py" -src "%PrePRD%" -dest "%PostPRD%" -keys "%IdColumn%"
2) 如果文件夹或文件包含空格,则需要将整个内容用引号引起来。更好:习惯于始终将文件夹/文件名括在引号中:
start "" "C:\Program Files (x86)\Notepad++\notepad++.exe" "C:\CSVComparison\results_details.json"
(start) 将第一个引用的字符串作为窗口标题,所以你需要给它一个假标题("")
【解决方案2】:
回答您的第一个问题 - 不幸的是,Windows 确实(还没有?)不知道 shebangs,因此您需要指定要使用 python interpeter 运行您的 python 脚本:
cmd /k "cd /d C:\CSVComparison"
C:\path\to\python.exe C:\CSVComparison\csv_diff.py -src "%PrePRD%" -dest "%PostPRD%" -keys "%IdColumn%"