问题:我想在文件夹上迭代以搜索特定的文件类型,然后使用一个程序和name.ext作为参数来执行它,然后运行python来更改第一个程序的输出名称。
我知道有更好的方法来做以上的事情,但我想到的方法是:
蝙蝠
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。如果有更好的办法,我会很高兴知道的。
发布于 2018-09-27 12:40:47
这是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行来处理。将输出放置在唯一文件中,如上文所述。
https://stackoverflow.com/questions/52533308
复制相似问题