1

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

На этот раз мне нужно сделать следующее:
Для каждой папки в этом каталоге: «F:\!Место хранения\!FS Addons\!X-Plane\!Инструменты\!Ortho4XP\ Плитки»

Сделайте следующее:

1) Проверьте, существует ли имя папки в файле в другом каталоге:
"E:\X Plane 11\X-Plane 11\Custom Scenery\scenery_packs.ini"
2) Если НЕ существует, введите имя папки в файл (scenery_packs.ini)
3) Если существует, не выводите эхо (в основном просто игнорируйте) и продолжайте проверять следующую папку до завершения

Я знаю, что для вывода чего-либо в файл вы используете echo Hello, World! >> file.ini

Моя проблема с переменными, так как есть несколько папок. Я очень плохо с моими петлями FOR :(

Спасибо за любой совет!

1 ответ1

0

Я не тестировал на реальной системе, но должно быть в порядке:

@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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .