String existe Check e Echo to File

1

pessoal Eu fui tão imensamente ajudado na última vez que vim para cá que pensei em voltar para mais, lol. Sério, no entanto. Aqueles que ajudaram na minha última pergunta me pouparam horas de trabalho nos últimos dias sozinhos. Um obrigado a eles novamente!

O que eu preciso fazer desta vez é o seguinte: Para cada pasta neste diretório: "F: \! Armazenamento \! FS Addons \! X-Plane \! Ferramentas \! Ortho4XP \ Tiles"

Faça o seguinte:

1) Verifique se existe um nome de pasta em um arquivo em um diretório diferente:
 "E: \ X Avião 11 \ X-Plane 11 \ Cenário Personalizado \ scenery_packs.ini"
2) Se não existir, digite o nome da pasta no arquivo (scenery_packs.ini)
3) Se existir, não faça eco (basicamente apenas ignore) e continue a verificar a próxima pasta até terminar |

Eu sei que para fazer o eco de algo em um arquivo que você usa echo Hello, World! >> file.ini

Meu problema é com as variáveis, pois há várias pastas. Estou muito mal com meus FOR loops: (

Obrigado por qualquer conselho!

    
por Andy Alvarez 24.08.2018 / 04:20

1 resposta

0

Eu não testei em um sistema real, mas tudo bem:

@echo off

setlocal EnableDelayedExpansion

set BaseFolder=F:\!Storage\!FS Addons\!X-Plane\!Tools\!Ortho4XP\Tiles
set FileForSearch=E:\X Plane 11\X-Plane 11\Custom Scenery\scenery_packs.ini
set NewFoldersList=%~dp0\NewFolders.txt

if exist ("!NewFoldersList!") (
  del /q "!NewFoldersList!" >nul 2>&1
)

for /d /r %%A in ("!BaseFolder!") do (
  set tmp_FolderFound=N

  for /f %%B in ("!FileForSearch!") do (
    if /i not [!FolderFound!]==[S] (
      if /i [%%A]==[%%B] (
        set tmp_FolderFound=S
        echo %%A>>"!NewFoldersList!"
      )
    )
  )
)

if exist ("!NewFoldersList!") (
  copy /b "!FileForSearch!"+"!NewFoldersList!" "!FileForSearch!" >nul 2>&1
)

setlocal DisableDelayedExpansion
endlocal
    
por 01.09.2018 / 23:45