]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - BaseTools/Source/Python/Makefile
ShellPkg: Do TrimSpace again after StdIn, StdOut, and StdErr are set up.
[mirror_edk2.git] / BaseTools / Source / Python / Makefile
... / ...
CommitLineData
1## @file\r
2# Windows makefile for Python tools build.\r
3#\r
4# Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>\r
5# This program and the accompanying materials\r
6# are licensed and made available under the terms and conditions of the BSD License\r
7# which accompanies this distribution. The full text of the license may be found at\r
8# http://opensource.org/licenses/bsd-license.php\r
9#\r
10# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12#\r
13\r
14!IFNDEF PYTHON_FREEZER_PATH\r
15!ERROR PYTHON_FREEZER_PATH must be defined!\r
16!ENDIF\r
17\r
18!IF EXIST ($(PYTHON_FREEZER_PATH)\cxfreeze)\r
19# Using cx_Freeze 4.2.3 with Python 2.7.2\r
20FREEZE=$(PYTHON_FREEZER_PATH)\cxfreeze\r
21!ELSE\r
22# Using cx_Freeze 3.0.3 with Python 2.5.4\r
23FREEZE=$(PYTHON_FREEZER_PATH)\FreezePython.exe\r
24!ENDIF\r
25\r
26MODULES=encodings.cp437,encodings.gbk,encodings.utf_16,encodings.utf_8,encodings.utf_16_le,encodings.latin_1,encodings.ascii\r
27\r
28BIN_DIR=$(EDK_TOOLS_PATH)\Bin\Win32\r
29\r
30APPLICATIONS=$(BIN_DIR)\build.exe $(BIN_DIR)\GenFds.exe $(BIN_DIR)\Trim.exe $(BIN_DIR)\TargetTool.exe $(BIN_DIR)\GenDepex.exe $(BIN_DIR)\GenPatchPcdTable.exe $(BIN_DIR)\PatchPcdValue.exe $(BIN_DIR)\BPDG.exe $(BIN_DIR)\UPT.exe $(BIN_DIR)\Rsa2048Sha256Sign.exe $(BIN_DIR)\Rsa2048Sha256GenerateKeys.exe\r
31\r
32COMMON_PYTHON=$(BASE_TOOLS_PATH)\Source\Python\Common\BuildToolError.py \\r
33 $(BASE_TOOLS_PATH)\Source\Python\Common\Database.py \\r
34 $(BASE_TOOLS_PATH)\Source\Python\Common\DataType.py \\r
35 $(BASE_TOOLS_PATH)\Source\Python\Common\DecClassObject.py \\r
36 $(BASE_TOOLS_PATH)\Source\Python\Common\Dictionary.py \\r
37 $(BASE_TOOLS_PATH)\Source\Python\Common\DscClassObject.py \\r
38 $(BASE_TOOLS_PATH)\Source\Python\Common\EdkIIWorkspace.py \\r
39 $(BASE_TOOLS_PATH)\Source\Python\Common\EdkIIWorkspaceBuild.py \\r
40 $(BASE_TOOLS_PATH)\Source\Python\Common\EdkLogger.py \\r
41 $(BASE_TOOLS_PATH)\Source\Python\Common\FdfClassObject.py \\r
42 $(BASE_TOOLS_PATH)\Source\Python\Common\FdfParserLite.py \\r
43 $(BASE_TOOLS_PATH)\Source\Python\Common\GlobalData.py \\r
44 $(BASE_TOOLS_PATH)\Source\Python\Common\Identification.py \\r
45 $(BASE_TOOLS_PATH)\Source\Python\Common\InfClassObject.py \\r
46 $(BASE_TOOLS_PATH)\Source\Python\Common\MigrationUtilities.py \\r
47 $(BASE_TOOLS_PATH)\Source\Python\Common\Misc.py \\r
48 $(BASE_TOOLS_PATH)\Source\Python\Common\Parsing.py \\r
49 $(BASE_TOOLS_PATH)\Source\Python\Common\String.py \\r
50 $(BASE_TOOLS_PATH)\Source\Python\Common\TargetTxtClassObject.py \\r
51 $(BASE_TOOLS_PATH)\Source\Python\Common\ToolDefClassObject.py \\r
52 $(BASE_TOOLS_PATH)\Source\Python\Common\VpdInfoFile.py \\r
53 $(BASE_TOOLS_PATH)\Source\Python\Common\BuildVersion.py \\r
54 $(BASE_TOOLS_PATH)\Source\Python\Workspace\BuildClassObject.py \\r
55 $(BASE_TOOLS_PATH)\Source\Python\Workspace\MetaDataTable.py \\r
56 $(BASE_TOOLS_PATH)\Source\Python\Workspace\MetaFileParser.py \\r
57 $(BASE_TOOLS_PATH)\Source\Python\Workspace\MetaFileTable.py \\r
58 $(BASE_TOOLS_PATH)\Source\Python\Workspace\WorkspaceDatabase.py \\r
59 $(BASE_TOOLS_PATH)\Source\Python\Autogen\AutoGen.py \\r
60 $(BASE_TOOLS_PATH)\Source\Python\Autogen\BuildEngine.py \\r
61 $(BASE_TOOLS_PATH)\Source\Python\Autogen\GenC.py \\r
62 $(BASE_TOOLS_PATH)\Source\Python\Autogen\GenDepex.py \\r
63 $(BASE_TOOLS_PATH)\Source\Python\Autogen\GenMake.py \\r
64 $(BASE_TOOLS_PATH)\Source\Python\Autogen\StrGather.py \\r
65 $(BASE_TOOLS_PATH)\Source\Python\Autogen\UniClassObject.py\r
66\r
67CMD_BUILD=$(BASE_TOOLS_PATH)\Source\Python\build\BuildReport.py \\r
68 $(BASE_TOOLS_PATH)\Source\Python\Eot\c.py \\r
69 $(BASE_TOOLS_PATH)\Source\Python\Eot\CLexer.py \\r
70 $(BASE_TOOLS_PATH)\Source\Python\Eot\CodeFragment.py \\r
71 $(BASE_TOOLS_PATH)\Source\Python\Eot\CodeFragmentCollector.py \\r
72 $(BASE_TOOLS_PATH)\Source\Python\Eot\CParser.py \\r
73 $(BASE_TOOLS_PATH)\Source\Python\Eot\Database.py \\r
74 $(BASE_TOOLS_PATH)\Source\Python\Eot\EfiCompressor.pyd \\r
75 $(BASE_TOOLS_PATH)\Source\Python\Eot\Eot.py \\r
76 $(BASE_TOOLS_PATH)\Source\Python\Eot\EotGlobalData.py \\r
77 $(BASE_TOOLS_PATH)\Source\Python\Eot\EotToolError.py \\r
78 $(BASE_TOOLS_PATH)\Source\Python\Eot\FileProfile.py \\r
79 $(BASE_TOOLS_PATH)\Source\Python\Eot\FvImage.py \\r
80 $(BASE_TOOLS_PATH)\Source\Python\Eot\InfParserLite.py \\r
81 $(BASE_TOOLS_PATH)\Source\Python\Eot\LzmaCompressor.pyd \\r
82 $(BASE_TOOLS_PATH)\Source\Python\Eot\Parser.py \\r
83 $(BASE_TOOLS_PATH)\Source\Python\Eot\ParserWarning.py \\r
84 $(BASE_TOOLS_PATH)\Source\Python\Eot\Report.py\r
85\r
86CMD_GENFDS=$(BASE_TOOLS_PATH)\Source\Python\GenFds\AprioriSection.py \\r
87 $(BASE_TOOLS_PATH)\Source\Python\GenFds\Attribute.py \\r
88 $(BASE_TOOLS_PATH)\Source\Python\GenFds\Capsule.py \\r
89 $(BASE_TOOLS_PATH)\Source\Python\GenFds\CapsuleData.py \\r
90 $(BASE_TOOLS_PATH)\Source\Python\GenFds\ComponentStatement.py \\r
91 $(BASE_TOOLS_PATH)\Source\Python\GenFds\CompressSection.py \\r
92 $(BASE_TOOLS_PATH)\Source\Python\GenFds\DataSection.py \\r
93 $(BASE_TOOLS_PATH)\Source\Python\GenFds\DepexSection.py \\r
94 $(BASE_TOOLS_PATH)\Source\Python\GenFds\EfiSection.py \\r
95 $(BASE_TOOLS_PATH)\Source\Python\GenFds\Fd.py \\r
96 $(BASE_TOOLS_PATH)\Source\Python\GenFds\FdfParser.py \\r
97 $(BASE_TOOLS_PATH)\Source\Python\GenFds\Ffs.py \\r
98 $(BASE_TOOLS_PATH)\Source\Python\GenFds\FfsFileStatement.py \\r
99 $(BASE_TOOLS_PATH)\Source\Python\GenFds\FfsInfStatement.py \\r
100 $(BASE_TOOLS_PATH)\Source\Python\GenFds\Fv.py \\r
101 $(BASE_TOOLS_PATH)\Source\Python\GenFds\FvImageSection.py \\r
102 $(BASE_TOOLS_PATH)\Source\Python\GenFds\GenFds.py \\r
103 $(BASE_TOOLS_PATH)\Source\Python\GenFds\GenFdsGlobalVariable.py \\r
104 $(BASE_TOOLS_PATH)\Source\Python\GenFds\GuidSection.py \\r
105 $(BASE_TOOLS_PATH)\Source\Python\GenFds\OptionRom.py \\r
106 $(BASE_TOOLS_PATH)\Source\Python\GenFds\OptRomFileStatement.py \\r
107 $(BASE_TOOLS_PATH)\Source\Python\GenFds\OptRomInfStatement.py \\r
108 $(BASE_TOOLS_PATH)\Source\Python\GenFds\Region.py \\r
109 $(BASE_TOOLS_PATH)\Source\Python\GenFds\Rule.py \\r
110 $(BASE_TOOLS_PATH)\Source\Python\GenFds\RuleComplexFile.py \\r
111 $(BASE_TOOLS_PATH)\Source\Python\GenFds\RuleSimpleFile.py \\r
112 $(BASE_TOOLS_PATH)\Source\Python\GenFds\Section.py \\r
113 $(BASE_TOOLS_PATH)\Source\Python\GenFds\UiSection.py \\r
114 $(BASE_TOOLS_PATH)\Source\Python\GenFds\VerSection.py \\r
115 $(BASE_TOOLS_PATH)\Source\Python\GenFds\Vtf.py\r
116\r
117CMD_BPDG=$(BASE_TOOLS_PATH)\Source\Python\BPDG\GenVpd.py \\r
118 $(BASE_TOOLS_PATH)\Source\Python\BPDG\StringTable.py\r
119\r
120CMD_UPT=$(BASE_TOOLS_PATH)\Source\Python\UPT\Core\DependencyRules.py \\r
121 $(BASE_TOOLS_PATH)\Source\Python\UPT\Core\DistributionPackageClass.py \\r
122 $(BASE_TOOLS_PATH)\Source\Python\UPT\Core\FileHook.py \\r
123 $(BASE_TOOLS_PATH)\Source\Python\UPT\Core\IpiDb.py \\r
124 $(BASE_TOOLS_PATH)\Source\Python\UPT\Core\PackageFile.py \\r
125 $(BASE_TOOLS_PATH)\Source\Python\UPT\Dll\sqlite3.dll \\r
126 $(BASE_TOOLS_PATH)\Source\Python\UPT\GenMetaFile\GenDecFile.py \\r
127 $(BASE_TOOLS_PATH)\Source\Python\UPT\GenMetaFile\GenInfFile.py \\r
128 $(BASE_TOOLS_PATH)\Source\Python\UPT\GenMetaFile\GenMetaFileMisc.py \\r
129 $(BASE_TOOLS_PATH)\Source\Python\UPT\GenMetaFile\GenXmlFile.py \\r
130 $(BASE_TOOLS_PATH)\Source\Python\UPT\InstallPkg.py \\r
131 $(BASE_TOOLS_PATH)\Source\Python\UPT\InventoryWs.py \\r
132 $(BASE_TOOLS_PATH)\Source\Python\UPT\Library\CommentGenerating.py \\r
133 $(BASE_TOOLS_PATH)\Source\Python\UPT\Library\CommentParsing.py \\r
134 $(BASE_TOOLS_PATH)\Source\Python\UPT\Library\DataType.py \\r
135 $(BASE_TOOLS_PATH)\Source\Python\UPT\Library\ExpressionValidate.py \\r
136 $(BASE_TOOLS_PATH)\Source\Python\UPT\Library\GlobalData.py \\r
137 $(BASE_TOOLS_PATH)\Source\Python\UPT\Library\Misc.py \\r
138 $(BASE_TOOLS_PATH)\Source\Python\UPT\Library\ParserValidate.py \\r
139 $(BASE_TOOLS_PATH)\Source\Python\UPT\Library\Parsing.py \\r
140 $(BASE_TOOLS_PATH)\Source\Python\UPT\Library\String.py \\r
141 $(BASE_TOOLS_PATH)\Source\Python\UPT\Library\UniClassObject.py \\r
142 $(BASE_TOOLS_PATH)\Source\Python\UPT\Library\Xml\XmlRoutines.py \\r
143 $(BASE_TOOLS_PATH)\Source\Python\UPT\Logger\Log.py \\r
144 $(BASE_TOOLS_PATH)\Source\Python\UPT\Logger\StringTable.py \\r
145 $(BASE_TOOLS_PATH)\Source\Python\UPT\Logger\ToolError.py \\r
146 $(BASE_TOOLS_PATH)\Source\Python\UPT\MkPkg.py \\r
147 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\Parser\DecObject.py \\r
148 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\Parser\InfBinaryObject.py \\r
149 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\Parser\InfBuildOptionObject.py \\r
150 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\Parser\InfCommonObject.py \\r
151 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\Parser\InfDefineCommonObject.py \\r
152 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\Parser\InfDefineObject.py \\r
153 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\Parser\InfDepexObject.py \\r
154 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\Parser\InfGuidObject.py \\r
155 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\Parser\InfHeaderObject.py \\r
156 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\Parser\InfLibraryClassesObject.py \\r
157 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\Parser\InfMisc.py \\r
158 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\Parser\InfPackagesObject.py \\r
159 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\Parser\InfPcdObject.py \\r
160 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\Parser\InfPpiObject.py \\r
161 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\Parser\InfProtocolObject.py \\r
162 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\Parser\InfSoucesObject.py \\r
163 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\Parser\InfUserExtensionObject.py \\r
164 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\POM\CommonObject.py \\r
165 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\POM\ModuleObject.py \\r
166 $(BASE_TOOLS_PATH)\Source\Python\UPT\Object\POM\PackageObject.py \\r
167 $(BASE_TOOLS_PATH)\Source\Python\UPT\Parser\DecParser.py \\r
168 $(BASE_TOOLS_PATH)\Source\Python\UPT\Parser\DecParserMisc.py \\r
169 $(BASE_TOOLS_PATH)\Source\Python\UPT\Parser\InfAsBuiltProcess.py \\r
170 $(BASE_TOOLS_PATH)\Source\Python\UPT\Parser\InfBinarySectionParser.py \\r
171 $(BASE_TOOLS_PATH)\Source\Python\UPT\Parser\InfBuildOptionSectionParser.py \\r
172 $(BASE_TOOLS_PATH)\Source\Python\UPT\Parser\InfDefineSectionParser.py \\r
173 $(BASE_TOOLS_PATH)\Source\Python\UPT\Parser\InfDepexSectionParser.py \\r
174 $(BASE_TOOLS_PATH)\Source\Python\UPT\Parser\InfGuidPpiProtocolSectionParser.py \\r
175 $(BASE_TOOLS_PATH)\Source\Python\UPT\Parser\InfLibrarySectionParser.py \\r
176 $(BASE_TOOLS_PATH)\Source\Python\UPT\Parser\InfPackageSectionParser.py \\r
177 $(BASE_TOOLS_PATH)\Source\Python\UPT\Parser\InfParser.py \\r
178 $(BASE_TOOLS_PATH)\Source\Python\UPT\Parser\InfParserMisc.py \\r
179 $(BASE_TOOLS_PATH)\Source\Python\UPT\Parser\InfPcdSectionParser.py \\r
180 $(BASE_TOOLS_PATH)\Source\Python\UPT\Parser\InfSectionParser.py \\r
181 $(BASE_TOOLS_PATH)\Source\Python\UPT\Parser\InfSourceSectionParser.py \\r
182 $(BASE_TOOLS_PATH)\Source\Python\UPT\PomAdapter\DecPomAlignment.py \\r
183 $(BASE_TOOLS_PATH)\Source\Python\UPT\PomAdapter\InfPomAlignment.py \\r
184 $(BASE_TOOLS_PATH)\Source\Python\UPT\PomAdapter\InfPomAlignmentMisc.py \\r
185 $(BASE_TOOLS_PATH)\Source\Python\UPT\ReplacePkg.py \\r
186 $(BASE_TOOLS_PATH)\Source\Python\UPT\RmPkg.py \\r
187 $(BASE_TOOLS_PATH)\Source\Python\UPT\UnitTest\CommentGeneratingUnitTest.py \\r
188 $(BASE_TOOLS_PATH)\Source\Python\UPT\UnitTest\CommentParsingUnitTest.py \\r
189 $(BASE_TOOLS_PATH)\Source\Python\UPT\UnitTest\DecParserTest.py \\r
190 $(BASE_TOOLS_PATH)\Source\Python\UPT\UnitTest\DecParserUnitTest.py \\r
191 $(BASE_TOOLS_PATH)\Source\Python\UPT\UnitTest\InfBinarySectionTest.py \\r
192 $(BASE_TOOLS_PATH)\Source\Python\UPT\Xml\CommonXml.py \\r
193 $(BASE_TOOLS_PATH)\Source\Python\UPT\Xml\GuidProtocolPpiXml.py \\r
194 $(BASE_TOOLS_PATH)\Source\Python\UPT\Xml\IniToXml.py \\r
195 $(BASE_TOOLS_PATH)\Source\Python\UPT\Xml\ModuleSurfaceAreaXml.py \\r
196 $(BASE_TOOLS_PATH)\Source\Python\UPT\Xml\PackageSurfaceAreaXml.py \\r
197 $(BASE_TOOLS_PATH)\Source\Python\UPT\Xml\PcdXml.py \\r
198 $(BASE_TOOLS_PATH)\Source\Python\UPT\Xml\XmlParser.py \\r
199 $(BASE_TOOLS_PATH)\Source\Python\UPT\Xml\XmlParserMisc.py\r
200\r
201 \r
202all: SetPythonPath $(APPLICATIONS)\r
203\r
204SetPythonPath:\r
205 set PYTHONPATH=$(BASE_TOOLS_PATH)\Source\Python\r
206\r
207$(BIN_DIR)\build.exe: $(BASE_TOOLS_PATH)\Source\Python\build\build.py $(COMMON_PYTHON) $(CMD_BUILD)\r
208 @pushd . & @cd build & @$(FREEZE) --include-modules=$(MODULES) --install-dir=$(BIN_DIR) build.py & @popd\r
209\r
210$(BIN_DIR)\GenFds.exe: $(BASE_TOOLS_PATH)\Source\Python\GenFds\GenFds.py $(COMMON_PYTHON) $(CMD_GENFDS)\r
211 @pushd . & @cd GenFds & @$(FREEZE) --include-modules=$(MODULES) --install-dir=$(BIN_DIR) GenFds.py & @popd\r
212\r
213$(BIN_DIR)\Trim.exe: $(BASE_TOOLS_PATH)\Source\Python\Trim\Trim.py $(COMMON_PYTHON)\r
214 @pushd . & @cd Trim & @$(FREEZE) --include-modules=$(MODULES) --install-dir=$(BIN_DIR) Trim.py & @popd\r
215\r
216$(BIN_DIR)\GenDepex.exe: $(BASE_TOOLS_PATH)\Source\Python\AutoGen\GenDepex.py $(COMMON_PYTHON)\r
217 @pushd . & @cd AutoGen & @$(FREEZE) --include-modules=$(MODULES) --install-dir=$(BIN_DIR) GenDepex.py & @popd\r
218\r
219$(BIN_DIR)\TargetTool.exe: $(BASE_TOOLS_PATH)\Source\Python\TargetTool\TargetTool.py $(COMMON_PYTHON)\r
220 @pushd . & @cd TargetTool & @$(FREEZE) --include-modules=$(MODULES) --install-dir=$(BIN_DIR) TargetTool.py & @popd\r
221\r
222$(BIN_DIR)\GenPatchPcdTable.exe: $(BASE_TOOLS_PATH)\Source\Python\GenPatchPcdTable\GenPatchPcdTable.py $(COMMON_PYTHON)\r
223 @pushd . & @cd GenPatchPcdTable & @$(FREEZE) --include-modules=$(MODULES) --install-dir=$(BIN_DIR) GenPatchPcdTable.py & @popd\r
224\r
225$(BIN_DIR)\PatchPcdValue.exe: $(BASE_TOOLS_PATH)\Source\Python\PatchPcdValue\PatchPcdValue.py $(COMMON_PYTHON)\r
226 @pushd . & @cd PatchPcdValue & @$(FREEZE) --include-modules=$(MODULES) --install-dir=$(BIN_DIR) PatchPcdValue.py & @popd\r
227\r
228$(BIN_DIR)\BPDG.exe: $(BASE_TOOLS_PATH)\Source\Python\BPDG\BPDG.py $(COMMON_PYTHON) $(CMD_BPDG)\r
229 @pushd . & @cd BPDG & @$(FREEZE) --include-modules=$(MODULES) --install-dir=$(BIN_DIR) BPDG.py & @popd\r
230\r
231$(BIN_DIR)\UPT.exe: $(BASE_TOOLS_PATH)\Source\Python\UPT\UPT.py $(CMD_UPT)\r
232 @pushd . & @cd UPT & @$(FREEZE) --include-modules=$(MODULES) --install-dir=$(BIN_DIR) UPT.py & @popd\r
233\r
234$(BIN_DIR)\Rsa2048Sha256Sign.exe: $(BASE_TOOLS_PATH)\Source\Python\Rsa2048Sha256Sign\Rsa2048Sha256Sign.py\r
235 @pushd . & @cd Rsa2048Sha256Sign & @$(FREEZE) --include-modules=$(MODULES) --install-dir=$(BIN_DIR) Rsa2048Sha256Sign.py & @popd\r
236 @pushd . & @copy /Y /B $(BASE_TOOLS_PATH)\Source\Python\Rsa2048Sha256Sign\TestSigningPrivateKey.pem $(BIN_DIR)\TestSigningPrivateKey.pem & @popd\r
237 \r
238$(BIN_DIR)\Rsa2048Sha256GenerateKeys.exe: $(BASE_TOOLS_PATH)\Source\Python\Rsa2048Sha256Sign\Rsa2048Sha256GenerateKeys.py\r
239 @pushd . & @cd Rsa2048Sha256Sign & @$(FREEZE) --include-modules=$(MODULES) --install-dir=$(BIN_DIR) Rsa2048Sha256GenerateKeys.py & @popd\r
240 \r
241clean:\r
242cleanall: \r
243 @del /f /q $(BIN_DIR)\*.pyd $(BIN_DIR)\*.dll\r
244 @for %%i in ($(APPLICATIONS)) do @del /f /q %%i\r
245\r