【问题标题】:unable to run python script from Batch file无法从批处理文件运行 python 脚本
【发布时间】:2018-02-11 10:01:46
【问题描述】:

您好,我希望从我编写的批处理文件中运行 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. 我希望打开 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%"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-20
        • 1970-01-01
        相关资源
        最近更新 更多