Reputation: 1893
I have a python code which I am using to generate the batch file and the input is coming from txt file
def create_bat_file(lp=None):
with open(r"test.txt", "r+") as file:
currentDir = os.path.abspath(".")
data = file.readlines()
for line in data:
a = line.split('=')
b = a[0]
f = a[1]
bk = a[2]
reldat = a[3]
f= open("{}.bat".format(f),"w+")
f.write("@ECHO OFF\n")
f.write("SET lp="'"{}"'"\n".format(lp))
if b == "RB":
f.write("SET reldat="'"{}"'"".format(reldat))
if b == "RB":
f.write("{}\\a.exe POST -d "'"best.variable.lp=lp"'"" " " "{}".format(currentDir,bk))
else:
f.write("{}\\a.exe POST -d "'"best.variable.cp=cp"'"" " " "{}".format(currentDir,bk))
f.close()
test.txt file is having below input
CL=TEST14=https://test.com.org/latst/queue/TEST-R=2020-12-22
Below is the output
@ECHO OFF
SET lp="test"
SET reldate="2020-12-22
"C:\a.exe POST -d "best.variable.cp"=cp https://test.com.org/rest/api/latest/queue/TEST-RR
Issue is when it creates the batch file (TEST14.bat)
Wrong:
SET reldate="2020-12-22
"C:\a.exe POST -d "best.variable.cp"=cp https://test.com.org/rest/api/latest/queue/TEST-RR
in output the end double quote comes to the next line it should be always like
Correct:
SET reldate="2020-12-22"
C:\a.exe POST -d "best.variable.cp"=cp https://test.com.org/rest/api/latest/queue/TEST-RR
Upvotes: 0
Views: 48
Reputation: 1562
The last character of line
is the newline character \n
. The last character of reldat
is also the newline character. Therefore, on the line:
f.write("SET reldat="'"{}"'"".format(reldat))
You end up adding a \n
before the last "
.
To fix, you can strip the \n
from line
and add the missing one where it is needed:
def create_bat_file(lp=None):
with open(r"test.txt", "r+") as file:
currentDir = os.path.abspath(".")
data = file.readlines()
for line in data:
line = line[:-1] #### STRIP NEWLINE CHARACTER ####
a = line.split('=')
b = a[0]
f = a[1]
bk = a[2]
reldat = a[3]
f= open("{}.bat".format(f),"w+")
f.write("@ECHO OFF\n")
f.write("SET lp="'"{}"'"\n".format(lp))
if b == "RB":
f.write('SET reldat="{}"\n'.format(reldat)) #### ADD MISSING NEWLINE ####
if b == "RB":
f.write("{}\\a.exe POST -d "'"best.variable.lp=lp"'"" " " "{}".format(currentDir,bk))
else:
f.write("{}\\a.exe POST -d "'"best.variable.cp=cp"'"" " " "{}".format(currentDir,bk))
f.close()
I also took the freedom to use single quotes around the string, it looks much better!
Upvotes: 2