Запуск файла .py с аргументом в .bat - PullRequest
0 голосов
/ 27 сентября 2018

Проблема: Я хочу перебрать папку в поиске определенного типа файла, затем выполнить ее с программой и аргументом 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 изменил имя, но после помещения его один раз в консолькажется, чтобы остаться со сценарием.BAT не меняет его, и это беспокоит меня.

PS.Если есть лучший способ, я буду рад узнать его.

1 Ответ

0 голосов
/ 27 сентября 2018

Это версия 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 здесь.с выводом, помещенным в уникальный файл, как упомянуто выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...