Как циклично выполниться через файлы, соответствующие подстановочному знаку в пакетном файле

$("#lightSlider").empty() или $("#lightSlider").html('') по какой-то причине не работали. Экземпляры световых индикаторов продолжали накапливаться с каждым новым представлением формы. Я не знаю почему. Также метод ("#lightSlider").lightslider().destroy() не работал, и это может быть по какой-то нечетной причине, что я не могу определить, может быть, что-то связано с тем, как я манипулирую DOM, я не знаю.

Что, в конечном итоге, заключалось в том, чтобы вставить блок <ul id="lightSlider">...</ul> в блок <div id="carousel-container">...</div>. Затем с каждым новым представлением формы я удалил весь блок #lightSlider с помощью $("#carousel-container").html('');. Затем я динамически воссоздал весь <ul id="lightSlider">...</ul> с новым обновленным контентом. Вот рабочий код:

        $("#carousel-container").html('');
        var lightsliderstring = "<ul id=\"lightSlider\">";
        for(i=1;i<thumbsArray.length;i++){
            lightsliderstring     += "<li>\n";
            if( $("#as_feature").val() ){
                lightsliderstring     += "   <h3>" + $("#as_feature").val() + " photo " + i + "</h3>\n";
            }
            lightsliderstring     += "   <img src=\"/" + thumbsArray[i] + "\" />\n";
            lightsliderstring     += "</li>\n";
        }
        lightsliderstring += "</ul>\n";

        $("#carousel-container").html(lightsliderstring);

        $('#lightSlider').lightSlider({
            auto: true,
            gallery: false,
            item: 1,
            loop: true,
            slideMargin: 0,
            thumbItem: 0
        });
181
задан George Stocker 29 November 2014 в 05:05
поделиться

5 ответов

Принятие Вас имеет две программы, которые обрабатывают эти два файла, process_in.exe и process_out.exe:

for %%f in (*.in) do (
    echo %%~nf
    process_in "%%~nf.in"
    process_out "%%~nf.out"
)

%% ~nf является модификатором замены, который разворачивает %f до имени файла только. Посмотрите другие модификаторы в https://technet.microsoft.com/en-us/library/bb490909.aspx (на полпути ниже на страницу) или только в следующем ответе.

281
ответ дан Peter 23 November 2019 в 06:08
поделиться

Можно использовать эту строку для печати содержания рабочего стола:

FOR %%I in (C:\windows\desktop\*.*) DO echo %%I 

, Как только Вы имеете %%I переменная, легко выполнить команду на нем (просто заменяют эхо слова Вашей программой)

, Кроме того, замена ДЛЯ ссылок на переменную была улучшена, можно теперь использовать следующий дополнительный синтаксис:

%~I         - expands %I removing any surrounding quotes (")
%~fI        - expands %I to a fully qualified path name
%~dI        - expands %I to a drive letter only
%~pI        - expands %I to a path only (directory with \)
%~nI        - expands %I to a file name only
%~xI        - expands %I to a file extension only
%~sI        - expanded path contains short names only
%~aI        - expands %I to file attributes of file
%~tI        - expands %I to date/time of file
%~zI        - expands %I to size of file
%~$PATH:I   - searches the directories listed in the PATH
               environment variable and expands %I to the
               fully qualified name of the first one found.
               If the environment variable name is not
               defined or the file is not found by the
               search, then this modifier expands to the
               empty string


[https://ss64.com/nt/syntax-args.html][1]

В вышеупомянутых примерах %I и ПУТЬ может быть заменен другими допустимыми значениями. %~ синтаксис завершается допустимым ДЛЯ имени переменной. Выбор прописных имен переменной как %I делает его более читаемым и избегает беспорядка с модификаторами, которые не чувствительны к регистру.

можно получить полную документацию путем ввода FOR /?

85
ответ дан u8it 23 November 2019 в 06:08
поделиться

Самый легкий путь, поскольку я вижу его, состоит в том, чтобы использовать для цикла, который называет второй пакетный файл для обработки, передавая что второй файл базовое имя.

Согласно для/? справка, базовое имя может быть извлечено с помощью остроты ~n опция. Так, основной сценарий читал бы:

for %%f in (*.in) do call process.cmd %%~nf

Затем в process.cmd, предполагают, что %0 содержит базовое имя и действие соответственно. Например:

echo The file is %0
copy %0.in %0.out
ren %0.out monkeys_are_cool.txt

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

РЕДАКТИРОВАНИЕ: это фантастически! Я так или иначе пропустил страницу в документах, которые показали, что Вы могли выполнить в многострочных блоках ДЛЯ цикла. Я собираюсь пойти, должны возвратиться и переписать некоторые пакетные файлы теперь...

5
ответ дан Nathan Fritz 23 November 2019 в 06:08
поделиться

Существует инструмент, обычно используемый в Серверах MS (насколько я могу помнить), названный forfiles:

ссылка выше содержит справку, а также ссылку на страницу загрузки Microsoft.

3
ответ дан 23 November 2019 в 06:08
поделиться

Подробно останавливаясь сообщение Nathans. Следующее сделает отдельную партию в одном пакетном файле.

@echo off

if %1.==Sub. goto %2

for %%f in (*.in) do call %0 Sub action %%~nf
goto end

:action
echo The file is %3
copy %3.in %3.out
ren %3.out monkeys_are_cool.txt

:end
3
ответ дан Community 23 November 2019 в 06:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: