在.bat中使用和参数运行.py文件

时间:2018-09-27 09:05:16

标签: python batch-file

问题:我想遍历文件夹以搜索某些文件类型,然后使用程序和name.ext作为参数执行它,然后运行更改输出名称的python脚本的第一个程序。

我知道可能有更好的方法可以完成上述操作,但是我想到的是:

[BAT]

for /R "C:\..\folder" %%a IN (*.extension) do ( SET name=%%a "C:\...\first_program.exe" "%%a" "C:\...\script.py" "%name%" )

[PY]

import io
import sys
def rename(i):
    name = i
    with open('my_file.txt', 'r') as file:
        data = file.readlines()
    data[40] ='"C:\\\\Users\\\\UserName\\\\Desktop\\\\folder\\\\folder\\\\' + name  + '"\n'
    with open('my_file.txt', 'w') as file:
        file.writelines( data )

if __name__ == "__main__":
    rename(sys.argv[1])

预期结果::我希望python文件更改名称,但是将其放入控制台一次之后,它似乎仍然保留在脚本中。英美烟草公司没有改变它,它困扰着我。

PS。如果有更好的方法,我将很高兴认识它。

1 个答案:

答案 0 :(得分:0)

这是linux bash版本,我确定您可以更改循环等以使其作为批处理文件代替您的*.exe,而我将cat用作通用输入输出示例

#! /bin/sh
for f in *.txt
do
    suffix=".txt"
    name=${f%$suffix}
    cat $f > tmp.dat
    awk -v myName=$f  '{if(NR==5)  print $0 myName; else print $0 }' tmp.dat > $name.dat
done

这将产生以输入*.dat文件命名的“唯一”输出*.txt文件。这些文件由cat(实际上是*.exe)处理,并将输出放入一个临时文件。最终,这是通过awk在此处更改第5行来处理的。如上所述,将输出放置在唯一文件中。