import openpyxl
import os
import shutil
# import pandas as pd
import datetime
wb_temp = openpyxl.load_workbook("E:\Projects\work_11_25\\Utility機種対応知能化\\Utility機種対応仕様.xlsx")
wb_info = openpyxl.load_workbook("E:\Projects\work_11_25\\Utility機種対応知能化\\Utility機種対応Input情報.xlsx")
wb_result = openpyxl.load_workbook("E:\Projects\work_11_25\\Utility機種対応知能化\\Utility詳細設計書_テンプレート_結果記入.xlsx")
ws_base = wb_temp["Color Correct Utility"]
ws_code = wb_temp["LANGCode"]
ws_info = wb_info["Color Correct Utility"]
# 复制原文件夹到新路径
value_MainVersion = ws_info['C9'].value
value_SubVersion = ws_info['C10'].value
folder_name = ""
value_MainVersion = value_MainVersion.split('.')
for v in value_MainVersion:
if len(v) == 1:
v = v.zfill(2)
folder_name += v
folder_name = folder_name + "_" + str(value_SubVersion)
# print(folder_name)
# 022500_0
source_path = os.path.abspath(r'E:\Projects\work_11_25\Utility機種対応知能化\CCU\Base\CCU_ALL_022401_1')
target_path = os.path.abspath(r'E:\Projects\work_11_25\Utility機種対応知能化\CCU_ALL_' + folder_name)
if not os.path.exists(target_path):
# 如果目标路径不存在原文件夹的话就创建
os.makedirs(target_path)
if os.path.exists(source_path):
# 如果目标路径存在原文件夹的话就先删除
shutil.rmtree(target_path)
shutil.copytree(source_path, target_path)
print('copy dir finished!')
# 多国语情报:
language_code = [ws_base['B22'].value, ws_base['B25'].value, ws_base['B28'].value, ws_base['B31'].value,
ws_base['B34'].value, ws_base['B37'].value, ws_base['B40'].value, ws_base['B43'].value,
ws_base['B46'].value, ws_base['B49'].value, ]
# ['ENU', 'JPN', 'CHS', 'CHT', 'DEU', 'ESP', 'FRA', 'ITA', 'KOR', 'PTB']
# 多国语编码
language_encoding = {}
for l in range(3, 26):
language_encoding.update({ws_code['B' + str(l)].value: ws_code['C' + str(l)].value})
# print(language_encoding)
# OS情报:
OS_info = [ws_base['B56'].value, ws_base['B57'].value]
# ['x86', 'x64']
path = target_path + '\\' + ws_base['C4'].value
path_readme = target_path + '\\' + ws_base['C12'].value
# setupdir\OS情報\Resource\多国語情報\ColorUtility\Oclutl.ini
path_list_dic = {}
path_list = []
path_list_readme = {}
readme_map = {'ENU': 'readme', 'JPN': 'readme', 'CHS': 'readme', 'CHT': 'readme', 'DEU': 'Liesmich', 'ESP': 'leame',
'FRA': 'LisezMoi', 'ITA': 'Leggimi', 'KOR': 'readme', 'PTB': 'readme', }
for lan in language_code:
for os in OS_info:
path_list_dic[lan + '_' + os] = path.replace('多国語情報', lan).replace('OS情報', os)
path_list_readme[lan] = path_readme.replace('多国語情報', lan).replace('ReadmeFile', readme_map[lan])
# print(path_list_readme)
# {'ENU': 'setupdir\\license\\ENU\\readme.txt',
# 'JPN': 'setupdir\\license\\JPN\\readme.txt',
# 'CHS': 'setupdir\\license\\CHS\\readme.txt',
# 'CHT': 'setupdir\\license\\CHT\\readme.txt',
# 'DEU': 'setupdir\\license\\DEU\\Liesmich.txt',
# 'ESP': 'setupdir\\license\\ESP\\license.txt',
# 'FRA': 'setupdir\\license\\FRA\\LisezMoi.txt',
# 'ITA': 'setupdir\\license\\ITA\\license.txt',
# 'KOR': 'setupdir\\license\\KOR\\readme.txt',
# 'PTB': 'setupdir\\license\\PTB\\readme.txt'}
# print(path_list_dic)
# {'ENU_x86': 'setupdir\\x86\\Resource\\ENU\\ColorUtility\\Oclutl.ini',
# 'JPN_x86': 'setupdir\\x86\\Resource\\JPN\\ColorUtility\\Oclutl.ini',
# 'CHS_x86': 'setupdir\\x86\\Resource\\CHS\\ColorUtility\\Oclutl.ini',
# 'CHT_x86': 'setupdir\\x86\\Resource\\CHT\\ColorUtility\\Oclutl.ini',
# 'DEU_x86': 'setupdir\\x86\\Resource\\DEU\\ColorUtility\\Oclutl.ini',
# 'ESP_x86': 'setupdir\\x86\\Resource\\ESP\\ColorUtility\\Oclutl.ini',
# 'FRA_x86': 'setupdir\\x86\\Resource\\FRA\\ColorUtility\\Oclutl.ini',
# 'ITA_x86': 'setupdir\\x86\\Resource\\ITA\\ColorUtility\\Oclutl.ini',
# 'KOR_x86': 'setupdir\\x86\\Resource\\KOR\\ColorUtility\\Oclutl.ini',
# 'PTB_x86': 'setupdir\\x86\\Resource\\PTB\\ColorUtility\\Oclutl.ini',
# 'ENU_x64': 'setupdir\\x64\\Resource\\ENU\\ColorUtility\\Oclutl.ini',
# 'JPN_x64': 'setupdir\\x64\\Resource\\JPN\\ColorUtility\\Oclutl.ini',
# 'CHS_x64': 'setupdir\\x64\\Resource\\CHS\\ColorUtility\\Oclutl.ini',
# 'CHT_x64': 'setupdir\\x64\\Resource\\CHT\\ColorUtility\\Oclutl.ini',
# 'DEU_x64': 'setupdir\\x64\\Resource\\DEU\\ColorUtility\\Oclutl.ini',
# 'ESP_x64': 'setupdir\\x64\\Resource\\ESP\\ColorUtility\\Oclutl.ini',
# 'FRA_x64': 'setupdir\\x64\\Resource\\FRA\\ColorUtility\\Oclutl.ini',
# 'ITA_x64': 'setupdir\\x64\\Resource\\ITA\\ColorUtility\\Oclutl.ini',
# 'KOR_x64': 'setupdir\\x64\\Resource\\KOR\\ColorUtility\\Oclutl.ini',
# 'PTB_x64': 'setupdir\\x64\\Resource\\PTB\\ColorUtility\\Oclutl.ini'}
# if p[3:] == "_x64":
dic_x86 = {}
dic_x64 = {}
for k in language_code:
dic_x86[k + '_x86'] = path_list_dic[k + '_x86']
dic_x64[k + '_x64'] = path_list_dic[k + '_x64']
# print(dic_x64)
# print(dic_x86)
def add_x86():
m = 0
for p in dic_x86:
pd = open("log.txt", "a+", encoding='utf-8')
update_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
with open(dic_x86[p], 'r', encoding=language_encoding[p[:-4]]) as f1:
new_section_name = '[CCMVer' + str(ws_info['C3'].value) + ']' # 获取H列单元格内容"section"
# [CCMVer42.3]
lst = f1.readlines() # 读取每行信息
if new_section_name+'\n' in lst:
comment = "该section在x86文件中已添加过,无需添加。"
print(comment + ' ---------------- ' + update_time)
pd.write(dic_x86[p] + '\n' + comment + ' ---------------- ' + update_time + '\n')
# sys.exit(0)
break
# #
n = lst.index('[StringSet1]\n') # 获取"[StringSet1]"的索引
lst.insert(n, new_section_name + '\n') # 将新section按照索引值插入列表中
pd.write(dic_x86[p] + '\n')
pd.write(new_section_name + '\n')
if ws_info['C8'].value == 'Default':
for i in range(5, 12):
n = n + 1
item = ws_base['E' + str(i)].value # 获取item值
value = str(ws_info['C' + str(i-1)].value) # 获取value值
if i == 8:
value = value + "\n"
if i == 9:
value = str(ws_base['D' + str(22 + m)].value)
if i == 10:
value = str(ws_base['D' + str(23 + m)].value)
if i == 11:
value = str(ws_base['D' + str(24 + m)].value) + "\n"
m += 3
lst.insert(n, item + "=" + value + '\n') # 将item值与value值按照索引插入列表中
pd.write(item + "=" + value + '\n')
pd.write('update time ---------------- ' + update_time + '\n\n\n')
elif ws_info['C8'].value == 'A6':
for i in range(5, 12):
n = n + 1
item = ws_base['E' + str(i)].value # 获取item值
value = str(ws_info['C' + str(i - 1)].value) # 获取value值
if i == 8:
value = value + "\n"
if i == 9:
value = str(ws_base['E' + str(22 + m)].value)
if i == 10:
value = str(ws_base['E' + str(23 + m)].value)
if i == 11:
value = str(ws_base['E' + str(24 + m)].value) + "\n"
m += 3
lst.insert(n, item + "=" + value + '\n') # 将item值与value值按照索引插入列表中
pd.write(item + "=" + value + '\n')
pd.write('update time ---------------- ' + update_time + '\n\n\n')
with open(dic_x86[p], 'w', encoding=language_encoding[p[:-4]]) as f2:
f2.writelines(lst)
pd.close()
def add_x64():
m = 0
for p in dic_x64:
pd = open("log.txt", "a+", encoding='utf-8')
update_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
with open(dic_x64[p], 'r', encoding=language_encoding[p[:-4]]) as f1:
new_section_name = '[CCMVer' + str(ws_info['C3'].value) + ']' # 获取H列单元格内容"section"
# [CCMVer42.3]
lst = f1.readlines() # 读取每行信息
if new_section_name+'\n' in lst:
comment = "该section在x64文件中已添加过,无需添加。"
print(comment + ' ---------------- ' + update_time)
pd.write(dic_x64[p] + '\n' + comment + ' ---------------- ' + update_time + '\n')
break
# #
n = lst.index('[StringSet1]\n') # 获取"[StringSet1]"的索引
lst.insert(n, new_section_name + '\n') # 将新section按照索引值插入列表中
pd.write(dic_x64[p] + '\n')
pd.write(new_section_name + '\n')
if ws_info['C8'].value == 'Default':
for i in range(5, 12):
n = n + 1
item = ws_base['E' + str(i)].value # 获取item值
value = str(ws_info['C' + str(i - 1)].value) # 获取value值
if i == 8:
value = value + "\n"
if i == 9:
value = str(ws_base['D' + str(22 + m)].value)
if i == 10:
value = str(ws_base['D' + str(23 + m)].value)
if i == 11:
value = str(ws_base['D' + str(24 + m)].value) + "\n"
m += 3
lst.insert(n, item + "=" + value + '\n') # 将item值与value值按照索引插入列表中
pd.write(item + "=" + value + '\n')
pd.write('update time ---------------- ' + update_time + '\n\n\n')
elif ws_info['C8'].value == 'A6':
for i in range(5, 12):
n = n + 1
item = ws_base['E' + str(i)].value # 获取item值
value = str(ws_info['C' + str(i - 1)].value) # 获取value值
if i == 8:
value = value + "\n"
if i == 9:
value = str(ws_base['E' + str(22 + m)].value)
if i == 10:
value = str(ws_base['E' + str(23 + m)].value)
if i == 11:
value = str(ws_base['E' + str(24 + m)].value) + "\n"
m += 3
lst.insert(n, item + "=" + value + '\n') # 将item值与value值按照索引插入列表中
pd.write(item + "=" + value + '\n')
pd.write('update time ---------------- ' + update_time + '\n\n\n')
with open(dic_x64[p], 'w', encoding=language_encoding[p[:-4]]) as f2:
f2.writelines(lst)
pd.close()
change_type_value = ws_base['B4'].value
if change_type_value == 'CCMVerion追加':
add_x86()
add_x64()
def readme():
for r in path_list_readme:
pd = open("log.txt", "a+", encoding='utf-8')
update_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
with open(path_list_readme[r], 'r+', encoding=language_encoding[r]) as f3:
line = f3.readlines()
index_list = []
# [' Windows 10 operating system\n', ' Windows 8.1 operating system\n', ' Windows 8 operating system\n',
# ' Windows 7 operating system\n', ' Windows Server 2019 operating system\n',
# ' Windows Server 2016 operating system\n', ' Windows Server 2012 R2 operating system\n',
# ' Windows Server 2012 operating system\n', ' Windows Server 2008 R2 operating system\n',
# ' Windows Server 2008 operating system\n']
for i in line:
if 'Version' in i:
ver = line.index(i)
line[ver] = " Version " + ws_info['C9'].value + '\n'
pd.write(path_list_readme[r] + '\n' + line[ver])
if 'Copyright' in i:
cr = line.index(i)
line[cr] = " " + ws_info['C12'].value + '\n'
pd.write(line[cr])
if 'Windows' in i and 'operating system' in i:
index_list.append(line.index(i))
line = [line[c] for c in range(len(line)) if (c not in index_list)]
line.insert(index_list[0], ws_info['C11'].value+'\n')
pd.write(ws_info['C11'].value + 'update time ---------------- ' + update_time + '\n\n')
pd.close()
with open(path_list_readme[r], 'w', encoding=language_encoding[r]) as f4:
f4.writelines(line)
print('readme done')
readme()
def version_modify():
pd = open("log.txt", "a+", encoding='utf-8')
with open(target_path + '\\' + 'version.txt', 'r', encoding='utf-8') as f5:
line = f5.readlines()
line[2] = 'MainVersion=' + ws_info['C9'].value + '\n'
line[3] = 'SubVersion=' + str(ws_info['C10'].value) + '\n'
line[4] = 'Copyright=' + ws_info['C12'].value
update_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
pd.write(target_path + '\\' + 'version.txt' + '\n' + line[2])
pd.write(line[3])
pd.write(line[4] + 'update time ---------------- ' + update_time + '\n\n')
pd.close()
with open(target_path + '\\' + 'version.txt', 'w', encoding='utf-8') as f6:
f6.writelines(line)
version_modify()