SO не является бесплатным кодовым письмом. Ваш вопрос скорее всего будет удален или закрыт, так как вы не обнаружили попыток решить вашу проблему.
Это, как было сказано, трудно запустить в пакетном режиме, так что вот решение.
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir\t w o"
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\togo*.csv" '
) DO (
FOR /f "usebackqdelims=" %%q IN ("%sourcedir%\%%a") DO SET "line=%%q"
ECHO %%a !line!
)
GOTO :EOF
Первые две строки отключить дисплей отладки Batch (в шоу-The-команда, а затем выполнить его) и вызвать режим, в котором доступ к переменным, которые были изменены в «блоке кода» (в скобки последовательность команд) (как правило, он отключен, и доступно только значение в момент, когда встречается if
(или что-то еще).)
Строка 3 задает переменную с именем sourcedir
и присваивает ей значение. Прилагаемые кавычки гарантируют, что конечные пробелы не включены в назначенное значение. Я сознательно использовал имя каталога, которое включает пробелы, потому что это обычная проблема, и это доказывает пакет в моем тестовом режиме. Имя вашего каталога будет другим - просто замените это. Адрес . означает «текущий каталог»
Линии 4-6 могут быть объединены в один - только стилистика. Это означает «выполнить сканирование каталогов, без имен каталогов (/a-d
) в базовой форме (/b
), то есть, только имена, каталога, имя которого находится в переменной sourcedir
и имена которых соответствуют шаблону togo*.csv
. Обработать каждую результирующую строку на игнорируя разделители по умолчанию и присваивая результат (т. е. всю строку списка каталогов, то есть имена файлов), к метапеременной (переменная управления контуром) %%a
.
Следующая строка считывает каждую строку файла, построенного из источника имя директории и имя файла в настоящее время в %%a
. delims
установлено в ничего, поэтому вся строка будет назначена метаобменимой %%q
и usebackq
указывает cmd
, что строка в скобках - это имя-кавычка, а не строка (или однокомандная команда для выполнения, как в первом for
.) Затем переменная line
будет установлена с каждой последовательной строкой из файл, поэтому ;ine
будет иметь последнюю строку из файла, когда заканчивается for...%%q...
.
Следующая строка показывает имя файла в %%a
и текст из последней строки этого файла в line
.
Обратите внимание на разницу - %%x
, чтобы получить доступ к содержимому из метапеременных, %var%
, чтобы получить доступ к содержимому переменного, но !var!
для доступа к измененному значению (если delayedexpansion
был вызван).
goto :eof
означает «идти к физическому конца-файлу» CMD
понятному :eof
означает «физический конец-файл»
Так что - вырезать и вставить в файл с именем независимо. летучей мыши, а затем запустить, просто введя
*whatever*
В общем,
for /?
будет у ield help для команды for
, и это относится к большинству командных команд. Посмотрите на SO за тысячами примеров.
Вы также можете исследовать
timeout
cls
choice
для подсказки о том, как достичь вашей every 5 minutes
амбиции. Возможно, вы захотите запустить это из планировщика задач, чтобы получить дисплей every 5 minutes
- множество способов добиться того же.
Попробуйте задать вопрос: http://stackoverflow.com/help/mcve – ceving
Я начинающий и не знаю, должны были начаться, это не тот ответ, который я искал ... – user2007221