"按"自动输入"程序运行时

时间:2017-10-31 11:30:40

标签: python batch-file command-line

我从bat文件或Python文件调用外部程序(fxTsUtf8.exe)。我浏览了数百个sos文件。在某些情况下,exe文件可能会因读取sos文件中的错误而失败。要继续执行exe文件,需要按下回车键。我怎么强迫"进入"在这种情况下输入?

我正在运行Windows 7和Python 3.5。 我尝试了两种方法。

1)仅使用bat文件 tegnsett2utf8.bat 调用(还尝试启动 C: \ Fysak \ fxTsUtf8.exe 直接:

@echo off
REM For all subfolders 
for /D /r %%s in ("*") do (
  echo Subfolder %%~nxs
  REM For all sosifiles
  for %%f in (%%s\*.sos) do (
    echo File %%f
    call C:\Fysak\fxTsUtf8.exe %%f
  )
)

2)从tegnsett2utf8.bat调用Python文件 2utf8.py 来运行fxTsUtf8.exe:

@echo off
REM For all subfolders 
for /D /r %%s in ("*") do (
  echo Subfolder %%~nxs
  REM For all sosifiles
  for %%f in (%%s\*.sos) do (
    echo File %%f
    python 2utf8.py %%f
  )
)

其中 2utf8.py 看起来像这样

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys              # for å kunne lese variable
import subprocess       # for å starte et annet program

fn = sys.argv[1]

print('Python - filnavn er: '+fn)
print('----------------------------------------')
# Run fxTsUtf8 to convert to UTF-8 encoding
try:
    subprocess.call(['C:\\Fysak\\fxTsUtf8.exe', fn])
except RunTimeError:
    pass

在两种情况下,屏幕上的输出(在cmd窗口中):

> C:\adhoc\SOSI_til_UTF8\Org\detalj\aas\aas21.sos Python - filnavn er:
> C:\adhoc\SOSI_til_UTF8\Org\detalj\aas\aas21.sos
> ----------------------------------------
> 
> fxTsUtf8 v. H1.1: Konverterer til UTF-8 tegnsett ...ORIGO-N├? mangler
> i filhodet. (Feil tegnsett?) Trykk [Enter] for Õ avbryte programmet:

但我无法弄清楚如何让bat文件或py文件继续下一个sos文件,而不会让我进入。

1 个答案:

答案 0 :(得分:2)

你可以尝试

domain = [('user_id','=',user.id)]

这应该将CRLF传递到echo; | call C:\Fysak\fxTsUtf8.exe %%f 的输入缓冲区。