Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Изменение метода поиска строк в конфиге (http://forum.oszone.net/showthread.php?t=341157)

Stalker_AleX333 03-07-2019 20:37 2878011

Изменение метода поиска строк в конфиге
 
Как бы мне вот это:
Код:

set "ControlPanelFilesListConfig=Silver Raven mods pack data\fileslist.cfg"
set "ControlPanelFilesListMissingFiles="

:: Чтение конфиг-файла fileslist.cfg
setlocal EnableDelayedExpansion
for /f "tokens=1,2* delims==" %%A in ("%ControlPanelFilesListConfig%") do set "$%%A=%%B"

:: Проверка наличия всех файлов для панели управления в Silver Raven mods pack data
for %%? in (%$ControlPanelFilesListConfig%) do (
if not exist "%%~?" set ControlPanelFilesListMissingFiles=!ControlPanelFilesListMissingFiles!, "%%~?"
)
setlocal DisableDelayedExpansion

if defined ControlPanelFilesListMissingFiles (
 color fc
 echo.
 echo *ОШИБКА! Следующие файлы, необходимые для корректной работы программы, не найдены:
 echo.
 echo.
 for %%A in (%ControlPanelFilesListMissingFiles%) do echo %%~A
 echo.
 echo.
 pause
 exit
)

научить читать файл конфига:
1. в столбик
2. по такому шаблону

Код:

[ControlPanelFilesList]
Silver Raven mods pack data\Additional options\Alternate Start\Alternate Start - Live Another Life.esp
Silver Raven mods pack data\Additional options\Alternate Start\Alternate Start - Live Another Life.bsa
Silver Raven mods pack data\Additional options\Serana\Cured\00002b6c.nif
Silver Raven mods pack data\Additional options\Serana\Vampire\00002b6c.nif
и т.д. и т.п.

[ДругойПараметр]
бла-бла-бла


greg zakharov 04-07-2019 15:23 2878156

Stalker_AleX333, лучше отказаться от идеи использовать для разборка конфигурационных файлов командные сценарии в пользу PowerShell и WinAPI.

Stalker_AleX333 04-07-2019 21:40 2878219

greg zakharov, знаю, знаю. Уже даже тестовый черновик есть.
Скрытый текст
Код:

$scriptName = $MyInvocation.MyCommand.Name
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
$exeName = "SkyrimSE.exe"
$processName = $exeName.Substring(0, $exeName.LastIndexOf(".exe"))
$modFolderName = "Silver Raven mods pack data"
$listfileName = "fileslist.cfg"
$soundconfigName = "hd_sounds_packages.cfg"
$autoupconfigName = "autoupdate.cfg"

$profileEnv = $ENV:UserProfile
$maininiName = "$profileEnv\Documents\My Games\Skyrim Special Edition"
$pluginsName = "$profileEnv\AppData\Local\Skyrim Special Edition"

#FUNCTIONS

#delete mod files
function deleteFiles ($path) {
        #remove mod folder
        if(Test-Path -LiteralPath "$path\$modFolderName") {
                Remove-Item -LiteralPath "$path\$modFolderName" -Force -Recurse
        }
        #remove script
        if(Test-Path -LiteralPath "$path\run.ps1") {
                Remove-Item -LiteralPath "$path\run.ps1" -Force
        }
}

#show information about current version and statuses
function printCurrentVersion () {
        #read sound config file
        $snd_searchParams = "HDSoundsPackagesStatus", "HDSoundsPackagesLocalizationStatus"
        $configFile = "$scriptPath\$modFolderName\$soundconfigName"
        $lines = Get-Content $configFile
        if(!$lines.Length) {
                Write-Host "File is empty: $configFile"
                return
        }
        #get lines from config file
        foreach($line in $lines) {
                foreach ($element in $snd_searchParams) {
                        $res = $line -match $element
                        if($res -eq $true) {
                                Write-Host ($line -replace "="," ")
                                break
                        }
                }
        }
       
        #read auto config file
        $auto_searchParam = "ModsPackVersion"
        $configFile = "$scriptPath\$modFolderName\$autoupconfigName"
        $lines = Get-Content $configFile
        if(!$lines.Length) {
                Write-Host "File is empty: $configFile"
                return
        }
        foreach($line in $lines) {
                $res = $line -match $auto_searchParam
                if($res -eq $true) {
                        Write-Host ($line -replace "="," ")
                        break
                }
        }
       
        Write-Host "ENBVersion Нет данных"
}

#final actions for localization settings
function finalizeLocalization ($modIniFile, $appIniFile, $configFile, $language) {
        #copy ini
        Copy-Item $modIniFile -Destination $appIniFile
        #add language status
        Add-Content $configFile "UpdateInstalled=$language"
        #update install status
        ((Get-Content -path $configFile) -replace 'HDSoundsPackagesStatus=Не установлен', 'HDSoundsPackagesStatus=Установлен') | Set-Content -Path $configFile
}

#process localization
function checkLocalization ($configFile) {
        $k_HDSoundsPackagesStatus = "HDSoundsPackagesStatus"
        $k_HDSoundsPackagesENGLocalization = "HDSoundsPackagesENGLocalization"
        $k_HDSoundsPackagesRUSLocalization = "HDSoundsPackagesRUSLocalization"
        $k_HDSoundsPackagesENGRUSLocalization = "HDSoundsPackagesENGRUSLocalization"
        $k_HDSoundsPackagesLocalizationStatus = "HDSoundsPackagesLocalizationStatus"

        #read sound file
        $lines = Get-Content $configFile
        if(!$lines.Length) {
                Write-Host "File is empty: $configFile"
                return
        }

        #get lines from config file
        $soundParams = @{}
        foreach($line in $lines) {
                #get values
                $pos = $line.IndexOf("=")
                if($pos -eq -1) {
                        continue
                }
                $k = $line.Substring(0, $pos)
                $v = $line.Substring(($pos + 1), ($line.Length - $pos - 1))
                $soundParams.$k = $v
        }

        if($soundParams.$k_HDSoundsPackagesStatus -eq "Не установлен") {
                Write-Host "Sound packages not installed"
               
                #check that both ru and eng files exist
                $filesOK = $true
                $files = $soundParams.$k_HDSoundsPackagesENGRUSLocalization.Split(",")
                foreach($file in $files) {
                        $file = $file.trim(" ")
                        if(!(Test-Path -LiteralPath "$scriptPath\$file")) {
                                Write-Host "Sound file: $scriptPath\$file not exist"
                                $filesOK = $false
                                break
                        }
                }
               
                if($filesOK -eq $true) {
                        #do something
                        Write-Host "All sound packages existed"
                        $soundParams.Clear()
                       
                        #select sound package
                        Write-Host -NoNewLine 'Select sound package(1 - eng, 2 - rus)[1]:'
                        $answer = $Host.UI.RawUI.ReadKey()
                        $key = $answer.Character
                        $iniFilename = ""
                        $language = ""
                        switch($key) {
                                "1" {
                                        Write-Host "`nEnglish selected"
                                        $iniFilename = "$scriptPath\$modFolderName\INI settings\Skyrim_eng.ini"
                                        $language = "Английский"
                                        break
                                }
                                "2" {
                                        Write-Host "`nRussian selected"
                                        $iniFilename = "$scriptPath\$modFolderName\INI settings\Skyrim_rus.ini"
                                        $language = "Русский"
                                        break
                                }
                                default {
                                        Write-Host "`nEnglish selected (default)"
                                        $iniFilename = "$scriptPath\$modFolderName\INI settings\Skyrim_eng.ini"
                                        $language = "Английский"
                                        break
                                }
                        }
                        finalizeLocalization $iniFilename "$maininiName\Skyrim.ini" $configFile $language
                        return
                }
               
                #check that eng files exist
                $filesOK = false
                $files = $soundParams.$k_HDSoundsPackagesENGLocalization.Split(",")
                foreach($file in $files) {
                        $file = $file.trim(" ")
                        if(!(Test-Path -LiteralPath "$scriptPath\$file")) {
                                Write-Host "Sound file: $scriptPath\$file not exist"
                                $filesOK = $false
                                break
                        }
                }
               
                if($filesOK -eq $true) {
                        #do something
                        Write-Host "Eng sound packages existed"
                        $soundParams.Clear()
                        finalizeLocalization $iniFilename "$maininiName\Skyrim.ini" $configFile $language
                        return
                }
               
                #check that rus files exist
                $filesOK = false
                $files = $soundParams.$k_HDSoundsPackagesRUSLocalization.Split(",")
                foreach($file in $files) {
                        $file = $file.trim(" ")
                        if(!(Test-Path -LiteralPath "$scriptPath\$file")) {
                                Write-Host "Sound file: $scriptPath\$file not exist"
                                $filesOK = $false
                                break
                        }
                }
               
                if($filesOK -eq $true) {
                        Write-Host "Rus sound packages existed"
                        $soundParams.Clear()
                        finalizeLocalization $iniFilename "$maininiName\Skyrim.ini" $configFile $language
                        return
                }
               
                Write-Host "No language selected"
        }
       
        Write-Host "Sound packages alredy installed"
}

#process autoconfig
function checkAutoupdate ($configFile) {
        $k_UpdateInstalled = "UpdateInstalled"
        $k_ModsPackVersion = "ModsPackVersion"
        $k_AutoUpdateFoldersForDelete = "AutoUpdateFoldersForDelete"
        $k_AutoUpdateFilesForDelete = "AutoUpdateFilesForDelete"
        $k_AutoUpdateRenameFoldersAndFiles = "AutoUpdateRenameFoldersAndFiles"
        $k_AutoUpdateMoveFoldersAndFiles = "AutoUpdateMoveFoldersAndFiles"

        #read config file
        $lines = Get-Content $configFile
        if(!$lines.Length) {
                Write-Host "File is empty: $configFile"
                return
        }

        #get lines from config file
        $autoupParams = @{}
        foreach($line in $lines) {
                #skip rem lines
                $pos = $line.IndexOf(";")
                if($pos -ne -1) {
                        continue
                }
                #get values
                $pos = $line.IndexOf("=")
                if($pos -eq -1) {
                        continue
                }
                $k = $line.Substring(0, $pos)
                $v = $line.Substring(($pos + 1), ($line.Length - $pos - 1))
                $autoupParams.$k = $v
        }
       
        if($autoupParams.$k_UpdateInstalled -eq $null) {
                Write-Host "Corrupted config file: UpdateInstalled parameter no found"
                return
        }
        if($autoupParams.$k_ModsPackVersion -eq $null) {
                Write-Host "Corrupted config file: ModsPackVersion parameter no found"
                return
        }
       
        if($autoupParams.$k_AutoUpdateFoldersForDelete -ne $null) {
                Write-Host "process AutoUpdateFoldersForDelete"
                #do something
        }
        if($autoupParams.$k_AutoUpdateFilesForDelete -ne $null) {
                Write-Host "process AutoUpdateFilesForDelete"
                #do something
        }
        if($autoupParams.$k_AutoUpdateRenameFoldersAndFiles -ne $null) {
                Write-Host "process AutoUpdateRenameFoldersAndFiles"
                #do something
        }
        if($autoupParams.$k_AutoUpdateFoldersForDelete -ne $null) {
                Write-Host "process AutoUpdateMoveFoldersAndFiles"
                #do something
        }
       
        #set status in config
        ((Get-Content -path $configFile) -replace 'UpdateInstalled=false', 'UpdateInstalled=true') | Set-Content -Path $configFile
}

#process plugins and settings
function copyPluginsAndSettings () {
        $prefsName = "$maininiName\SkyrimPrefs.ini"
        $pluginsSrcName = "$scriptPath\$modFolderName\Plugins list\Plugins.txt"
        $refSettings = @{}
        $refSettings.bDrawLandShadows = "1"
        $refSettings.bFXAAEnabled = "0"
        $refSettings.bEnableImprovedSnow = "0"
        $refSettings.bShadowsOnGrass = "1"
        $refSettings.fTreesMidLODSwitchDist = "12288.0000"
        $refSettings.fMeshLODLevel2FadeTreeDistance = "6144.0000"
        $refSettings.fMeshLODLevel1FadeTreeDistance = "8192.0000"
        $refSettings.fSkyCellRefFadeDistance = "295000.0000"
        $refSettings.iWaterReflectHeight = "1024"
        $refSettings.iWaterReflectWidth = "1024"
        $refSettings.uiMaxSkinnedTreesToRender = "200"
       
        #check that perf file exist
        if(!(Test-Path -LiteralPath $prefsName)) {
                Write-Host "Config file not found: $prefsName"
                return
        }
        else {
                #read perf file
                $content = Get-Content $prefsName
                if(!$content.Length) {
                        Write-Host "File is empty: $prefsName"
                        return
                }
               
                #replace values in config
                foreach($line in $content) {
                        foreach ($h in $refSettings.GetEnumerator()) {
                                $key = $h.Name
                                $replaceString = $h.Name + "=" + $h.Value
                                $res = $line -match $key
                                if($res -eq $true) {
                                        $content = $content.replace($line, $replaceString)
                                        break
                                }
                        }
                }
                $content | Set-Content $prefsName
        }
       
        #if plugins file exist process it
        if(Test-Path -LiteralPath $pluginsSrcName) {
                Write-Host "Plugins file found. Copy it"
                Copy-Item $pluginsSrcName -Destination "$pluginsName"
        }
}

#MENUS

function menuLocalizationAndMusic () {
        Write-Host -NoNewLine 'Select action (1 - Download localization, 2 - Select localization)[2]:'
        $answer = $Host.UI.RawUI.ReadKey()
        $key = $answer.Character
        switch($key) {
                "1" {
                        Write-Host "`nDownload localization selected"
                        #code not ready
                        break
                }
                "2" {
                        Write-Host "`nSelect localization selected"
                        break
                }
                default {
                        Write-Host "`nSelect localization selected (default)"
                        break
                }
        }
}

function menuLocalizationActication () {
        Write-Host -NoNewLine 'Select sound package (1 - eng, 2 - rus, 0 - back)[0]:'
        $answer = $Host.UI.RawUI.ReadKey()
        $key = $answer.Character
        switch($key) {
                "1" {
                        Write-Host "`nEnglish selected"
                        #some code
                        break
                }
                "2" {
                        Write-Host "`nRussia selected"
                        #some code
                        break
                }
                "0" {
                        menuLocalizationAndMusic
                }
                default {
                        menuLocalizationAndMusic
                }
        }
}

function menuSelectUpdateSource () {
        Write-Host -NoNewLine 'Select download source (1 - Gamer-Mods.ru, 2 - ЯндексДиск, 3 - GoogleDrive, 0 - back)[0]:'
        $answer = $Host.UI.RawUI.ReadKey()
        $key = $answer.Character
        switch($key) {
                "1" {
                        Write-Host "`nGamer-Mods.ru selected"
                        start https://gamer-mods.ru/load/skyrim_se/grafika/silver_raven_mods_pack/152-1-0-5368
                        break
                }
                "2" {
                        Write-Host "`nЯндексДиск selected"
                        start https://yadi.sk/d/qyJbvZs43Mb3fR
                        break
                }
                "3" {
                        Write-Host "`nGoogleDrive selected"
                        start https://drive.google.com/drive/folders/0B8H6Ge9z3EyEN3l5QWJpQXJuSmc?usp=sharing
                        #some code
                        break
                }
                default {
                        #back
                        break
                }
        }
}

function menuMain () {
        Write-Host -NoNewLine 'Select download source (1 - copy plugins, 2 - hd packages, 3 - update, 4 - loot, 5 - info, 6 - delete, 0 - exit)[0]:'
        $answer = $Host.UI.RawUI.ReadKey()
        $key = $answer.Character
        switch($key) {
                "1" {
                        Write-Host "`nCopy plugins selected"
                        break
                }
                "2" {
                        Write-Host "`nHD packages selected"
                        break
                }
                "3" {
                        Write-Host "`nUpdate selected"
                        break
                }
                "4" {
                        Write-Host "`nLoot selected"
                        break
                }
                "5" {
                        Write-Host "`nInfo selected"
                        break
                }
                "6" {
                        Write-Host "`nDelete selected"
                        break
                }
                default {
                        return
                }
        }
}

#MAIN BODY

#check that exe file in same folder
if(!(Test-Path -LiteralPath "$scriptPath\$exeName")) {
  Write-Host "Executable file not found: $scriptPath\$exeName"
  return
}

#check that game is not running
$processActive = Get-Process $processName -ErrorAction SilentlyContinue
if($processActive -ne $null) {
        Write-Host "Process is active: $processName"
        return
}

#check mod folder with list file exist
if(!(Test-Path -LiteralPath "$scriptPath\$modFolderName\$listfileName")) {
        Write-Host "Mod folder not found: $scriptPath\$modFolderName\$listfileName"
        return
}

#check that list file not empty
$lines = Get-Content "$scriptPath\$modFolderName\$listfileName";
if(!$lines.Length) {
        Write-Host "File is empty: $scriptPath\$modFolderName\$listfileName";
        return
}

#check that each file exist
foreach($line in $lines) {
        if(!(Test-Path -LiteralPath "$scriptPath\$line")) {
                Write-Host "File not found: $scriptPath\$line"
                return
        }
}

#test success!
#checkLocalization "$scriptPath\$modFolderName\$soundconfigName"
#test success!
#checkAutoupdate "$scriptPath\$modFolderName\$autoupconfigName"
#test success!
#copyPluginsAndSettings
#test success!
#printCurrentVersion
#test success!
#deleteFiles "E:\temp3\CMD1"

Write-Host "End!"


Но работающий как надо вариант нужен был еще вчера...

greg zakharov 05-07-2019 20:36 2878375

Stalker_AleX333, у вас .cfg файл по структуре похож на .ini, а потому проще, повторюсь, использовать WinAPI, конкретней - GetPrivateProfileString и иже с ним.

Stalker_AleX333 13-07-2019 22:19 2879680

Не буду плодить однотипные темы, подниму эту.

Вот почему-то перестал работать вот этот кусок. Глаза уже "замылились", может я где-то испоганил?

Код:

set "ControlPanelFilesListConfig=Silver Raven mods pack data\fileslist.cfg"
set "ControlPanelFilesListMissingFiles="

:: Чтение конфиг-файла fileslist.cfg
setlocal EnableDelayedExpansion
for /f "tokens=1,2* delims==" %%A in ("%ControlPanelFilesListConfig%") do set "$%%A=%%B"

:: Проверка наличия всех файлов для панели управления в Silver Raven mods pack data
for %%? in (%$ControlPanelFilesListConfig%) do (
if not exist "%%~?" set ControlPanelFilesListMissingFiles=!ControlPanelFilesListMissingFiles!, "%%~?"
)
setlocal DisableDelayedExpansion

if defined ControlPanelFilesListMissingFiles (
color fc
 echo.
 echo.
 echo.
 echo *ОШИБКА! Следующие файлы, необходимые для корректной работы программы, не найдены:
 echo.
 echo.
 for %%A in (%ControlPanelFilesListMissingFiles%) do echo %%~A
 echo.
 echo.
 echo Извлеките папку Silver Raven mods pack data из установочных архивов со сборкой в папку игры вручную и перезапустите панель управления. Убедитесь, что антивирусное ПО не блокирует ее работу.
 echo.
 echo.
pause
exit
)

fileslist.cfg

Код:

ControlPanelFilesList="Silver Raven mods pack data\Additional options\Alternate Start\Alternate Start - Live Another Life.esp" "Silver Raven mods pack data\Additional options\Alternate Start\Alternate Start - Live Another Life.bsa" "Silver Raven mods pack data\Additional options\Serana\Cured\00002b6c.nif" и т.д.


З.Ы. Если что, это чудо должно сверять наличие файлов со списком в конфиге и в случае отсутствия чего-либо ругаться, выводя в столбик список отсутствующего.

Stalker_AleX333 20-07-2019 18:08 2880714

Для справки. В общем, дошел до этого:

Код:

call :read_control_panel_files_list_config "%ControlPanelFilesListConfig%"

:: Проверка наличия всех файлов для панели управления в Silver Raven mods pack data
setlocal EnableDelayedExpansion
for %%? in (!$ControlPanelFilesList!) do (
    if "" == "!!" endlocal
    if not exist "%%?" (
      set File=%%?
      setlocal EnableDelayedExpansion
      for /f "delims=" %%A in ("!ControlPanelFilesListMissingFiles!, !File!") do (
        endlocal
        set ControlPanelFilesListMissingFiles=%%A
      )
    )
)

if defined %ControlPanelFilesListMissingFiles% (
color fc
 echo.
 echo.
 echo.
 echo *ОШИБКА! Нижеуказанные файлы, необходимые для корректной работы программы, не найдены:
 echo.
 echo.

for /f "usebackq tokens=1* delims==" %%A  in ("%ControlPanelFilesListConfig%") do (
    for %%? in (%%B) do if not exist %%? set ControlPanelFilesListMissingFiles=1 && echo %%~?
 
 echo.
 echo.
 echo.
 echo *ОШИБКА! Вышеуказанные файлы, необходимые для корректной работы программы, не найдены.
 echo.
 echo Извлеките папку Silver Raven mods pack data из установочных архивов со сборкой в папку игры вручную и перезапустите панель управления. Убедитесь, что антивирусное ПО не блокирует ее работу.
 echo.
 echo.
pause
exit
)

Только, эта штука валится при наличии всех указанных в списке файлов. Еще пришлось спрашивать на других форумах, как нормально обойти игнор спец. символа (в данном случае ! ), встречающегося в именах некоторых файлов.

megaloman 21-07-2019 15:42 2880823

Stalker_AleX333, Плохо, что приведён код (надо его изучать, чтобы понять смысл задачи), легче - когда поставлена задача.
Пытаюсь сформулировать: есть текстовый файл, например,
Silver Raven mods pack data\fileslist.cfg,
в котором, среди прочего, содержится список файлов в виде определённого параметра
Код:

ControlPanelFilesList="Silver Raven mods pack data\Additional options\Alternate Start\Alternate Start - Live Another Life.esp" "Silver Raven mods pack data\Additional options\Alternate Start\Alternate Start - Live Another Life.bsa" "Silver Raven mods pack data\Additional options\Serana\Cured\00002b6c.nif" и т.д.
Надо проанализировать наличие перечисленных файлов, выдать список отсутствующих, при отсутствии хоть одного файла - завершить работу. При наличии всех файлов - продолжить исполнение следующего кода.
Вот вариант
Код:

@Echo Off
cls
        Set "CFG=Silver Raven mods pack data\fileslist.cfg"
        Set "FileList=ControlPanelFilesList="

        If  Not Exist "%CFG%" (Echo !!! File "%CFG%" not found  &Pause &Exit /B 2)

        Set /A N=100
        Set /A Log=0

        FOR /F "usebackq tokens=1* delims==" %%i IN (`FINDSTR /I "%FileList%" "%CFG%"`) DO (
                Set /A Log=1
                FOR %%f IN (%%j) DO If Not Exist %%f (
                        Set /A N+=1
                        Call Set "@@@%%N%%=%%f"
                )
        )
        If %Log%==0 (Echo !!! Parameter "%FileList%" not found in "%CFG%" &Pause &Exit /B 2)

        If Not %N%==100 (
                Echo !!! Files not found
                FOR /F "usebackq tokens=1* delims==" %%i IN (`Set "@@@"`) DO Echo %%j
                Pause
                Exit /B 2
        )

        Echo Здесь пишем остальной код
pause
Exit /B

Восклицаний не боится! Чтобы не было проблем с "!", надо суметь обойтись без setlocal EnableDelayedExpansion
Если надо искать наличие файлов, перечисленных в разных параметрах, лучше это оформить в виде процедуры
Код:

@Echo Off
cls
        Set "CFG=Silver Raven mods pack data\fileslist.cfg"

        Set /A N=100
        Call :NoFiles "%CFG%" "ControlPanelFilesList=" ||Exit /B 2
        Call :NoFiles "%CFG%" "TraLaLaFilesList=" ||Exit /B 2

        If Not %N%==100 (
                Echo !!! Files not found
                FOR /F "usebackq tokens=1* delims==" %%i IN (`Set "@@@"`) DO Echo %%j
                Pause
                Exit /B 2
        )

        Echo Здесь пишем остальной код
pause
Exit /B

:NoFiles
        If  Not Exist %1 (Echo !!! File %1 not found  &Pause &Exit /B 2)

        Set /A Log=0
        FOR /F "usebackq tokens=1* delims==" %%i IN (`FINDSTR /I %2 %1`) DO (
                Set /A Log=1
                FOR %%f IN (%%j) DO If Not Exist %%f (
                        Set /A N+=1
                        Call Set "@@@%%N%%=%%f"
                )
        )
        If %Log%==0 (Echo !!! Parameter %2 not found in %1 &Pause &Exit /B 2)
Exit /B 0

Цитата:

Цитата Stalker_AleX333
научить читать файл конфига:
1. в столбик
2. по такому шаблону »

Вот так, но как это связано с поиском отсутствующих файлов?
Код:

@Echo Off
cls
        Set "CFG=Silver Raven mods pack data\fileslist.cfg"
        Set "Out=Silver Raven mods pack data\fileslist.cfg2"

        If  Not Exist "%CFG%" (Echo !!! File "%CFG%" not found  &Pause &Exit /B 2)

        >"%Out%" (FOR /F "usebackq tokens=1* delims==" %%i IN (`2^>nul More "%CFG%"`) DO (
                Echo [%%i]
                If Not "%%j"=="" FOR %%f IN (%%j) DO Echo %%~f
                Echo.
        ))
pause
Exit /B



Время: 05:51.

Время: 05:51.
© OSzone.net 2001-