PDA

Показать полную графическую версию : [решено] найти файл и использовать его имя


Mad Max
19-07-2009, 17:17
Добрый день!
Суть задачи:
1. в папке имеються много файлов, нужно получить имя exe файла с наименьшим размером.
2. есть текстовый файл 1.txt, примерно такого содержания:
;!@Install@!UTF-8!
ExtractTitle="Myprog"
GUIMode="2"
RunProgram="xlk334r38.exe"
;!@InstallEnd@!

так вот нужно заменить имя exe файла в файле на найденное.

Зарание всем спасибо за помощь!

gora
19-07-2009, 17:27
есть текстовый файл 1.txt, примерно такого содержания: »
Забыли указать, что этот файл в кодировке UTF-8 ;)
Попробуйте так:@Echo Off
Setlocal EnableDelayedExpansion
:: путь к папке с файлами (имя искомого файла только в латинице)
Set _path=c:\Temp

For /F "delims=" %%a In ('dir "%_path%" /A:-D /B') Do If "%%~xa"==".exe" (
If Not DEFINED minS Set minS=%%~za
If !minS! GEQ %%~za Set minS=%%~za& Set minN=%%~nxa
)
Echo RunProgram="!minN!">>a.txt
setlocal disabledelayedexpansion
Echo ;!@InstallEnd@!>>a.txt
Pause>nul
Exit
Рядом с бат файлом положите файл a.txt в кодировке UTF-8 (с сигнатурой) следующего содержания:;!@Install@!UTF-8!
ExtractTitle="Myprog"
GUIMode="2"
Важно. Имя найденного файла не должно содержать кириллицу!!!

Mad Max
19-07-2009, 22:03
При таком раскладе выбирает последний exe файл

gora
19-07-2009, 22:22
Mad Max, попробуйте изменить оператор сравнения на GEQ так:
If !minS! GEQ %%~za Set minS=%%~za& Set minN=%%~nxa

Mad Max
19-07-2009, 23:13
Тоже самое, почему то %%~za выдает пустышки....
На те файлы которые были вытянуты 7зипом из сфх архива неопределяет размер...

П.С.
Сделал так:

For /F "delims=" %%a In ('dir "%_path%\*.exe" /A:-D /B /O:S') Do set MinN=%%a& goto :end
:end
Echo RunProgram="%minN%">>a.txt
Echo ;!@InstallEnd@!>>a.txt

Оптимизируйте если можно.




© OSzone.net 2001-2012