无法从批处理文件运行python脚本

时间:2018-02-11 10:01:47

标签: python batch-file notepad++

你好我希望从我写的批处理文件中运行一个python脚本(我没写)

我有两个问题:

  1. 在命令提示符下运行该命令可以正常工作但是从批处理文件中它失败并且没有错误消息; 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%"
    
  2. 我希望打开使用Notepad++创建的python的输出文件,但我不确定它会以这种方式工作:

    start C:\Program Files (x86)\Notepad++\notepad++.exe C:\CSVComparison\results_details.json
    notepad++.exe C:\CSVComparison\results_details.json
    
  3. 谢谢,

2 个答案:

答案 0 :(得分:1)

回答你的第一个问题 - 不幸的是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%"

答案 1 :(得分: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)将第一个引用的字符串作为窗口标题,因此您需要给它一个假标题(""