• Как найти в гугл таблице самое большое число в диапазоне E2-E335?

    mik777em
    @mik777em Автор вопроса
    Alexander Ivanov,
    Я сделал так:
    =SORT(ДВССЫЛ("ITOG!E2:E335");ITOG!E2:E335;ЛОЖЬ)
    Это отчасти работает т.к. это костыль который не полный.

    Вот почему:
    Я собственно с созданием этой темы и хотел узнать номер строки, чтоб его использовать для того чтоб этот номер строки использовать для вывода в столбце А значения которые идут в одной строке с искомыми (в вашем случае отсортированными значениями) ячеек диапазона Е2-E335

    например:
    тут мы видим что в ячейке B3 мы получили 4,551% и по факту значение 4,551% у нас стоит на листе ITOG в диапазоне E2-E335 конкретно в ячейке E51

    Окей, мы нашли номер строки это: 51
    тогда нужно чтоб в A3 стояло значение из ячейки A51 листа ITOG
    65ccbaa1d6714506418913.png
    Написано
  • Как найти в гугл таблице самое большое число в диапазоне E2-E335?

    mik777em
    @mik777em Автор вопроса
    Ошибка
    Все аргументы функции SORT после позиции 1 должны быть парными.

    65ccb132e0bf0490628518.png
    Написано
  • Почему на WP сайте код (плагин AJAX Load More) не грузит страницы исходя из языка?

    mik777em
    @mik777em Автор вопроса
    Refguser, но тут не в языках дело, а в выборочной загрузке страниц , то есть нужно загружать страницы у которых есть такой же паттерн в url как у материнской страницы
    Написано
  • Почему на WP сайте код (плагин AJAX Load More) не грузит страницы исходя из языка?

    mik777em
    @mik777em Автор вопроса
    решение это просто отдельные страницы\папки созданные независимо друг от друга и существующие независимо, называйте это как хотите, это сути это не меняет.

    Есть Url https://transscreen.ru/news11043/ это значит страница (page) на русском языке т. к. в нём нету ru.
    Есть вообще другая независимая страница, у которой другой url вот такой: https://transscreen.ru/pt/news11043/ она на португальском языке.

    Иными словами.... очень простая хотелка у меня, например у меня грузится страница https://transscreen.ru/pt/luboytext , значит внизу нее должен плагин AJAX Load More грузить вообще любые страницы с сайта transscreen.ru у которых в url вот такой патерн:
    https://transscreen.ru/pt/luboytext

    где luboytext- Любой текст)))
    Написано
  • Почему при сортировке удаляются формулы?

    mik777em
    @mik777em Автор вопроса
    я сделал так и всё заработало как я хотел) спасибо за подсказки!

    function sortSheetByColumnE() {
      sortSheetByColumn(5, false); // Сортировка по столбцу E без изменения формата
      addPercentageToCells(); // Вызов функции для добавления символа процента в конец каждой ячейки диапазона E2:F999
      fillEmptyWithZeroPercentage()
    }
    
    function sortSheetByColumnF() {
      sortSheetByColumn(6, true); // Сортировка по столбцу F с изменением формата на проценты
      addPercentageToCells(); // Вызов функции для добавления символа процента в конец каждой ячейки диапазона E2:F999
      fillEmptyWithZeroPercentage()
    }
    
    
    
    
    
    // добавляем символ процента в конец каждой ячейки диапазона E2:F999
    function addPercentageToCells() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var range = sheet.getRange('E2:F999'); // Выбираем диапазон E2:F999
      var values = range.getValues(); // Получаем значения в диапазоне
      // Перебираем все строки и столбцы в диапазоне
      for (var row = 0; row < values.length; row++) {
        for (var col = 0; col < values[row].length; col++) {
          if (values[row][col] !== '') { // Проверяем, не пустая ли ячейка
            values[row][col] += '%'; // Добавляем символ процента
          }
        }
      }
      range.setValues(values); // Обновляем ячейки новыми значениями
    }
    
     // очищаем все ячейки где стоит 0% в диапазоне E2:E 999
    function clearZeroPercentages() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var lastRow = sheet.getLastRow();
      var rangeE = sheet.getRange("E2:E" + lastRow);
      var rangeF = sheet.getRange("F2:F" + lastRow);
      var valuesE = rangeE.getValues();
      var valuesF = rangeF.getValues();
      // Очищаем ячейки, содержащие 0% в столбцах E и F
      valuesE.forEach(function(row, i) {
        if (row[0] === '0%') row[0] = '';
      });
      valuesF.forEach(function(row, i) {
        if (row[0] === '0%') row[0] = '';
      });
      // Устанавливаем обновленные значения обратно в лист
      rangeE.setValues(valuesE);
      rangeF.setValues(valuesF);
    }
    
    // удаляем из диапазона E2:E999 из всех ячеек символа процента
    function removePercentageSign() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var range = sheet.getRange("E2:F999");
      var data = range.getValues();
      // Удаляем символ процента из всех ячейк
      var newData = data.map(function(row) {
        return row.map(function(cell) {
          if (typeof cell === 'string' && cell.endsWith('%')) {
            return cell.slice(0, -1);
          }
          return cell;
        });
      });
    
      // Устанавливаем обновленные данные обратно в диапазон
      range.setValues(newData);
    }
    
     // во все ячейки где пустота , ставим 0% в диапазоне E2:F999
    function fillEmptyWithZeroPercentage() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var lastRow = sheet.getRange("A" + sheet.getLastRow()).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
      var rangeE = sheet.getRange("E2:E" + lastRow);
      var rangeF = sheet.getRange("F2:F" + lastRow);
      var valuesE = rangeE.getValues();
      var valuesF = rangeF.getValues();
    
      // Заполняем пустые ячейки текстом "0%" в столбцах E и F
      valuesE.forEach(function(row, i) {
        if (!row[0]) row[0] = '0%'; // Если ячейка пуста, заполняем её "0%"
      });
      valuesF.forEach(function(row, i) {
        if (!row[0]) row[0] = '0%'; // Если ячейка пуста, заполняем её "0%"
      });
    
      // Устанавливаем обновленные значения обратно в лист
      rangeE.setValues(valuesE);
      rangeF.setValues(valuesF);
    }
    
    
    
    
    
     // функция сортировки внутри которой мы сначала чистим ячейки в диапазоне E2:F999 где стоит ноль,
     // потом удаляем из E2:F999 в ячейках символы процентов
    function sortSheetByColumn(columnIndex, shouldConvertToPercent) {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      
      clearZeroPercentages(); // Очистка нулевых процентов перед сортировкой
      removePercentageSign(); // Удаление символа процента
    
      // Вызываем кастомную функцию сортировки
      customSort(sheet, columnIndex);
    
    
    }
    
    
    function customSort(sheet, columnIndex) {
      // Получаем данные и формулы
      var lastRow = sheet.getLastRow();
      var range = sheet.getRange('A2:F' + lastRow);
      var data = range.getValues();
      var formulas = range.getFormulas();
    
      // Привязываем значения и формулы к их индексам
      var combinedData = data.map(function(row, index) {
        return {
          value: row[columnIndex - 1],
          formulas: formulas[index],
          index: index,
          row: row
        };
      });
    
      // Сортировка
      combinedData.sort(compare);
    
      // Разделяем отсортированные значения и формулы
      var sortedValues = combinedData.map(function(item) { return item.row; });
      var sortedFormulas = combinedData.map(function(item) { return item.formulas; });
    
      // Записываем отсортированные данные
      range.setValues(sortedValues);
    
      // Обновляем формулы
      sortedFormulas.forEach(function(rowFormulas, rowIndex) {
        rowFormulas.forEach(function(formula, colIndex) {
          if (formula) { // Обновляем только ячейки с формулами
            sheet.getRange(rowIndex + 2, colIndex + 1).setFormula(formula);
          }
        });
      });
    }
    
    
    function compare(a, b) {
      var valA = a.value === '' || a.value === '0%' ? 0 : parseFloat(a.value.replace(',', '.'));
      var valB = b.value === '' || b.value === '0%' ? 0 : parseFloat(b.value.replace(',', '.'));
    
      // Положительные числа идут перед нулями и отрицательными числами, сортируются по убыванию
      if (valA > 0 && valB <= 0) return -1;
      if (valB > 0 && valA <= 0) return 1;
      if (valA > 0 && valB > 0) return valB - valA;
    
      // Нули идут после положительных и отрицательных чисел
      if (valA === 0 && valB !== 0) return 1;
      if (valB === 0 && valA !== 0) return -1;
    
      // Среди отрицательных чисел меньшее по абсолютной величине число идет перед большим
      if (valA < 0 && valB < 0) return Math.abs(valA) - Math.abs(valB);
    
      return 0; // Если все проверки пройдены и значения равны, порядок не меняется
    }
    Написано
  • Почему при сортировке удаляются формулы?

    mik777em
    @mik777em Автор вопроса
    попробовал сделать, вроде работает, но отрицательные числа в E и F сортирует по абсолютному значению:
    659c0edd961ad821044025.png

    а по идее должно же идти вот так:
    3
    2
    1
    -1
    -2
    -3


    Конкретно функция сортировки:
    function sortSheetByColumn(columnIndex, shouldConvertToPercent) {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      
      clearZeroPercentages(); // Очистка нулевых процентов перед сортировкой
      removePercentageSign(); // Удаление символа процента
    
      var lastRow = sheet.getLastRow();
      var range = sheet.getRange('A2:F' + lastRow);
    
      // Сортируем диапазон по столбцу с индексом columnIndex в убывающем порядке
      range.sort({column: columnIndex, ascending: false});
    
    
    }


    Весь код:
    function sortSheetByColumnE() {
      sortSheetByColumn(5, false); // Сортировка по столбцу E без изменения формата
      addPercentageToCells(); // Вызов функции для добавления символа процента в конец каждой ячейки диапазона E2:F999
      fillEmptyWithZeroPercentage()
    }
    
    function sortSheetByColumnF() {
      sortSheetByColumn(6, true); // Сортировка по столбцу F с изменением формата на проценты
      addPercentageToCells(); // Вызов функции для добавления символа процента в конец каждой ячейки диапазона E2:F999
      fillEmptyWithZeroPercentage()
    }
    
    
    
    
    
    // добавляем символ процента в конец каждой ячейки диапазона E2:F999
    function addPercentageToCells() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var range = sheet.getRange('E2:F999'); // Выбираем диапазон E2:F999
      var values = range.getValues(); // Получаем значения в диапазоне
      // Перебираем все строки и столбцы в диапазоне
      for (var row = 0; row < values.length; row++) {
        for (var col = 0; col < values[row].length; col++) {
          if (values[row][col] !== '') { // Проверяем, не пустая ли ячейка
            values[row][col] += '%'; // Добавляем символ процента
          }
        }
      }
      range.setValues(values); // Обновляем ячейки новыми значениями
    }
    
     // очищаем все ячейки где стоит 0% в диапазоне E2:E 999
    function clearZeroPercentages() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var lastRow = sheet.getLastRow();
      var rangeE = sheet.getRange("E2:E" + lastRow);
      var rangeF = sheet.getRange("F2:F" + lastRow);
      var valuesE = rangeE.getValues();
      var valuesF = rangeF.getValues();
      // Очищаем ячейки, содержащие 0% в столбцах E и F
      valuesE.forEach(function(row, i) {
        if (row[0] === '0%') row[0] = '';
      });
      valuesF.forEach(function(row, i) {
        if (row[0] === '0%') row[0] = '';
      });
      // Устанавливаем обновленные значения обратно в лист
      rangeE.setValues(valuesE);
      rangeF.setValues(valuesF);
    }
    
    // удаляем из диапазона E2:E999 из всех ячеек символа процента
    function removePercentageSign() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var range = sheet.getRange("E2:F999");
      var data = range.getValues();
      // Удаляем символ процента из всех ячейк
      var newData = data.map(function(row) {
        return row.map(function(cell) {
          if (typeof cell === 'string' && cell.endsWith('%')) {
            return cell.slice(0, -1);
          }
          return cell;
        });
      });
    
      // Устанавливаем обновленные данные обратно в диапазон
      range.setValues(newData);
    }
    
     // во все ячейки где пустота , ставим 0% в диапазоне E2:F999
    function fillEmptyWithZeroPercentage() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var lastRow = sheet.getRange("A" + sheet.getLastRow()).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
      var rangeE = sheet.getRange("E2:E" + lastRow);
      var rangeF = sheet.getRange("F2:F" + lastRow);
      var valuesE = rangeE.getValues();
      var valuesF = rangeF.getValues();
    
      // Заполняем пустые ячейки текстом "0%" в столбцах E и F
      valuesE.forEach(function(row, i) {
        if (!row[0]) row[0] = '0%'; // Если ячейка пуста, заполняем её "0%"
      });
      valuesF.forEach(function(row, i) {
        if (!row[0]) row[0] = '0%'; // Если ячейка пуста, заполняем её "0%"
      });
    
      // Устанавливаем обновленные значения обратно в лист
      rangeE.setValues(valuesE);
      rangeF.setValues(valuesF);
    }
    
    
    
    
    
     // функция сортировки внутри которой мы сначала чистим ячейки в диапазоне E2:E999 где стоит ноль,
     // потом удаляем из E2:E999 в ячейках символы процентов
    function sortSheetByColumn(columnIndex, shouldConvertToPercent) {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      
      clearZeroPercentages(); // Очистка нулевых процентов перед сортировкой
      removePercentageSign(); // Удаление символа процента
    
      var lastRow = sheet.getLastRow();
      var range = sheet.getRange('A2:F' + lastRow);
    
      // Сортируем диапазон по столбцу с индексом columnIndex в убывающем порядке
      range.sort({column: columnIndex, ascending: false});
    
    
    }
    Написано
  • В чём ошибка в формуле в гугл таблице?

    mik777em
    @mik777em Автор вопроса
    Григорий Боев,
    спасибо, вобщем сработал такой вариант:
    =ЕСЛИ(ЛЕВСИМВ(A3; 2) = "LD"; ЕСЛИ(ЕСЛИОШИБКА(ПОИСКПОЗ(ПРАВСИМВ(A3; ДЛСТР(A3) - 2); A:A; 0); ЛОЖЬ); 0; ЕСЛИ(A3 = "LDUSDT"; 1 * B3; ЕСЛИОШИБКА(ВПР(ПРАВСИМВ(A3; ДЛСТР(A3) - 2) & "USDT"; price!A:B; 2; ЛОЖЬ) * B3; ЕСЛИОШИБКА(ВПР(ПРАВСИМВ(A3; ДЛСТР(A3) - 2) & "BTC"; price!A:B; 2; ЛОЖЬ) * $C$2 * B3; ЕСЛИ(A3 = "USDT"; 1 * B3; "Нет цены для монеты и USDT или BTC"))))); ЕСЛИОШИБКА(ВПР(A3 & "USDT"; price!A:B; 2; ЛОЖЬ) * B3; ЕСЛИОШИБКА(ВПР(A3 & "BTC"; price!A:B; 2; ЛОЖЬ) * $C$2 * B3; ЕСЛИ(A3 = "USDT"; 1 * B3; "Нет цены для монеты и USDT или BTC"))))
    Написано
  • В чём ошибка в формуле в гугл таблице?

    mik777em
    @mik777em Автор вопроса
    да вы правы, chatGPT ставит запятые вместо точки с запятой.
    В общем я попробовал эту простую формулу интегрировать в мою основную формулу, и гугл таблицы ругается на количество аргументов , не пойму в каком именно IF :
    =ЕСЛИ(ЕСЛИОШИБКА(ПОИСКПОЗ(ПРАВСИМВ(A1; ДЛСТР(A1) - 2); A:A; 0); ЛОЖЬ); 0; ЕСЛИОШИБКА(ВПР(A1 & "USDT"; price!A:B; 2; ЛОЖЬ) * B1; ЕСЛИОШИБКА(ВПР(A1 & "BTC"; price!A:B; 2; ЛОЖЬ) * $C$1 * B1; ЕСЛИ(ЛЕВСИМВ(A1; 2) = "LD"; ЕСЛИ(ЕСЛИОШИБКА(ВПР(ПРАВСИМВ(A1; ДЛСТР(A1) - 2) & "USDT"; price!A:B; 2; ЛОЖЬ) * B1; ЕСЛИОШИБКА(ВПР(ПРАВСИМВ(A1; ДЛСТР(A1) - 2) & "BTC"; price!A:B; 2; ЛОЖЬ) * $C$1 * B1; ЕСЛИ(ИЛИ(A1 = "LDUSDT"; A1 = "USDT"); 1 * B1; "Нет цены для монеты и USDT или BTC")))); "Нет цены для монеты и USDT или BTC"))))


    6592caef8dcef497596860.png
    Написано
  • Где в формуле ошибка?

    mik777em
    @mik777em Автор вопроса
    Вот так переделал:
    =ЕСЛИ(ЕСТЬОШИБКА(ПОИСКПОЗ(ПРАВСИМВ(A6; ДЛСТР(A6) - 2); A:A; 0)), ЕСЛИОШИБКА(ВПР(A6 & "USDT"; price!A:B; 2; ЛОЖЬ) * B6, ЕСЛИОШИБКА(ВПР(A6 & "BTC"; price!A:B; 2; ЛОЖЬ) * $C$5 * B6, ЕСЛИ(ЛЕВСИМВ(A6; 2) = "LD", ЕСЛИОШИБКА(ВПР(ПРАВСИМВ(A6; ДЛСТР(A6) - 2) & "USDT"; price!A:B; 2; ЛОЖЬ) * B6, ЕСЛИОШИБКА(ВПР(ПРАВСИМВ(A6; ДЛСТР(A6) - 2) & "BTC"; price!A:B; 2; ЛОЖЬ) * $C$5 * B6, "Нет цены для монеты и USDT или BTC")), "Нет цены для монеты и USDT или BTC"))))


    Вроде тут между должны же стоять запятые (подчеркнул красным), где конкретно я не прав?

    Но ошибка:
    6591bf466b230998456317.png
    Написано
  • Почему при работе батника не отображается результат поиска файла?

    mik777em
    @mik777em Автор вопроса
    подправил for:
    :: @echo off
    setlocal
    
    :: Создаем уникальный идентификатор для нашего процесса поиска
    set "searchID=%random%"
    
    :: Создаем временный файл для хранения результатов
    set "tempfile=%temp%\temp_search_results_%searchID%.txt"
    set "flagfile=%tempfile%.flag"
    
    :: Запускаем поиск в фоновом режиме
    start /b cmd /c "(for %%D in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (dir /s /b "%%D:\Magneto.exe" 2>nul >> "%tempfile%") && (echo Done > "%flagfile%"))"
    
    :: Ожидаем завершения поиска или истечения таймера
    set /a "timeout=600"
    
    :waitloop
    if exist "%flagfile%" (
        goto searchdone
    )
    timeout /t 1 /nobreak >nul
    set /a "timeout-=1"
    if !timeout! leq 0 (
        goto searchdone
    )
    goto waitloop
    
    :searchdone
    :: Проверяем, нашелся ли файл и извлекаем путь
    set "filepath="
    if exist "%tempfile%" (
        for /f "delims=" %%I in ('type "%tempfile%"') do (
            set "filepath=%%~dpI"
            goto filefound
        )
    )
    
    :filefound
    if defined filepath (
        echo Found Magneto.exe at: %filepath%Magneto.exe
    ) else (
        echo File Magneto.exe not found after 600 seconds.
    )
    
    :: Очищаем временные файлы
    del "%tempfile%" 2>nul
    del "%flagfile%" 2>nul
    
    endlocal


    Лог работы батника:
    C:\Users\Administrator\Downloads>setlocal
    
    C:\Users\Administrator\Downloads>set "searchID=4735"
    
    C:\Users\Administrator\Downloads>set "tempfile=C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt"
    
    C:\Users\Administrator\Downloads>set "flagfile=C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt.flag"
    
    C:\Users\Administrator\Downloads>start /b cmd /c "(for %D in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (dir /s /b "%D:\Magneto.exe" 2>nul >> "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt") && (echo Done > "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt.flag"))"
    
    C:\Users\Administrator\Downloads>set /a "timeout=600"
    
    C:\Users\Administrator\Downloads>if exist "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt.flag" (goto searchdone )
    
    C:\Users\Administrator\Downloads>timeout /t 1 /nobreak  1>nul
    
    C:\Users\Administrator\Downloads>(dir /s /b "C:\Magneto.exe"  2>nul 1>>"C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt" )  && (echo Done  1>"C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt.flag" )
    
    C:\Users\Administrator\Downloads>set /a "timeout-=1"
    
    C:\Users\Administrator\Downloads>if !timeout! LEQ 0 (goto searchdone )
    
    C:\Users\Administrator\Downloads>set "filepath="
    
    C:\Users\Administrator\Downloads>if exist "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt" (for /F "delims=" %I in ('type "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt"') do (
    set "filepath=%~dpI"
     goto filefound
    ) )
    
    C:\Users\Administrator\Downloads>if defined filepath (echo Found Magneto.exe at: Magneto.exe )  else (echo File Magneto.exe not found after 600 seconds. )
    File Magneto.exe not found after 600 seconds.
    
    C:\Users\Administrator\Downloads>del "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt"  2>nul
    C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt
    
    C:\Users\Administrator\Downloads>del "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt.flag"  2>nul
    
    C:\Users\Administrator\Downloads>endlocal
    
    C:\Users\Administrator\Downloads>(dir /s /b "D:\Magneto.exe"  2>nul 1>>"C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt" )  && (echo Done  1>"C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt.flag" )
    
    C:\Users\Administrator\Downloads>(dir /s /b "E:\Magneto.exe"  2>nul 1>>"C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt" )  && (echo Done  1>"C:\Users\Administrator\AppData\Local\Temp\temp_search_results_4735.txt.flag" )
    Написано
  • Почему при работе батника не отображается результат поиска файла?

    mik777em
    @mik777em Автор вопроса
    Попробовал:
    :: @echo off
    setlocal
    
    :: Создаем уникальный идентификатор для нашего процесса поиска
    set "searchID=%random%"
    
    :: Создаем временный файл для хранения результатов
    set "tempfile=%temp%\temp_search_results_%searchID%.txt"
    set "flagfile=%tempfile%.flag"
    
    :: Запускаем поиск в фоновом режиме
    start /b cmd /c "(for %%D in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (dir /s /b "%%D:\Magneto.exe" 2>nul >> "%tempfile%") && (echo Done > "%flagfile%"))"
    
    :: Ожидаем завершения поиска или истечения таймера
    set /a "timeout=600"
    
    :waitloop
    if exist "%flagfile%" (
        goto searchdone
    )
    timeout /t 1 /nobreak >nul
    set /a "timeout-=1"
    if !timeout! leq 0 (
        goto searchdone
    )
    goto waitloop
    
    :searchdone
    :: Проверяем, нашелся ли файл и извлекаем путь
    set "filepath="
    if exist "%tempfile%" (
        for /f "usebackq delims=" %%I in ("%tempfile%") do (
            set "filepath=%%~dpI"
            goto filefound
        )
    )
    
    :filefound
    if defined filepath (
        echo Found Magneto.exe at: %filepath%Magneto.exe
    ) else (
        echo File Magneto.exe not found after 600 seconds.
    )
    
    :: Очищаем временные файлы
    del "%tempfile%" 2>nul
    del "%flagfile%" 2>nul
    
    endlocal


    Пишет: "Не удается найти файл C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt" Видимо работает в разных циклах или асинхронно:

    Лог батника:
    C:\Users\Administrator\Downloads>setlocal
    
    C:\Users\Administrator\Downloads>set "searchID=2949"
    
    C:\Users\Administrator\Downloads>set "tempfile=C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt"
    
    C:\Users\Administrator\Downloads>set "flagfile=C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt.flag"
    
    C:\Users\Administrator\Downloads>start /b cmd /c "(for %D in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (dir /s /b "%D:\Magneto.exe" 2>nul >> "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt") && (echo Done > "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt.flag"))"
    
    C:\Users\Administrator\Downloads>set /a "timeout=600"
    
    C:\Users\Administrator\Downloads>if exist "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt.flag" (goto searchdone )
    
    C:\Users\Administrator\Downloads>timeout /t 1 /nobreak  1>nul
    
    C:\Users\Administrator\Downloads>(dir /s /b "C:\Magneto.exe"  2>nul 1>>"C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt" )  && (echo Done  1>"C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt.flag" )
    
    C:\Users\Administrator\Downloads>set /a "timeout-=1"
    
    C:\Users\Administrator\Downloads>if !timeout! LEQ 0 (goto searchdone )
    
    C:\Users\Administrator\Downloads>set "filepath="
    
    C:\Users\Administrator\Downloads>if exist "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt" (for /F "usebackq delims=" %I in ("C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt") do (
    set "filepath=%~dpI"
     goto filefound
    ) )
    Не удается найти файл C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt.
    
    C:\Users\Administrator\Downloads>if defined filepath (echo Found Magneto.exe at: Magneto.exe )  else (echo File Magneto.exe not found after 600 seconds. )
    File Magneto.exe not found after 600 seconds.
    
    C:\Users\Administrator\Downloads>del "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt"  2>nul
    C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt
    
    C:\Users\Administrator\Downloads>del "C:\Users\Administrator\AppData\Local\Temp\temp_search_results_2949.txt.flag"  2>nul
    
    C:\Users\Administrator\Downloads>endlocal
    Написано
  • Почему в всех элементах списка одно и тоже значение?

    mik777em
    @mik777em Автор вопроса
    modelair, код работает привильно на 99 % ....не хватает только то что в теме описал
    Написано
  • Почему регулярка берет лишние элементы?

    mik777em
    @mik777em Автор вопроса
    WbICHA, посмотрите в вопросе я исправил с какой стороны.
    6408fbc193807563739886.png
  • Почему регулярка берет лишние элементы?

    mik777em
    @mik777em Автор вопроса
    AUser0, да я понимаю что ожидаются символы но они должны отсекаться. Потому что мой JS интерпретатор этой регуляркой дергает из текста #Functions, к
  • Почему регулярка берет лишние элементы?

    mik777em
    @mik777em Автор вопроса
    AUser0, почти, но нужно более точное соответствие, потому что в вашей регулярке правая часть не прописана (что идёт после знаков препинания), а она должна быть прописана для точного соответствия (мне так нужно). Вот как тут на скрине:6408d12388b8c527794874.png

    вот регулярка со скрина:
    /(?!#[a-zA-Zа-яА-Я0-9_]+\s+)(#[a-zA-Zа-яА-Я]+)[,.!:?\s]?(\s[a-zA-Zа-яА-Я])/g


    Но опять же, как только запятую мне стоит убрать после #Functions и тогда регулярка не видит #Functions

    А если запятую ставлю, то регулярка захватывает с искомым еще и лишние символы .

    Вот что берет: #Functions, к то есть почему-то захватывает , к
  • Почему регулярка берет лишние элементы?

    mik777em
    @mik777em Автор вопроса
    если символ запятой убираю в тексте после #Functions, -> #Functions

    то не ничего не находит, хотя по идее я в регулярке прописал что один из символов ,.!:? может быть, а может и не быть
  • Почему регулярка берет лишние элементы?

    mik777em
    @mik777em Автор вопроса
    WbICHA, исправил в вопросе. Справа от искомого должно стоять: пробел словоБезСимвола# пробел