Вопросы по С/С++ (СИ)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Опытный кот
Аватара пользователя
Сообщения: 867
Зарегистрирован: Пт фев 27, 2015 12:00:53
Откуда: Рязанская область

Сообщение Serzh2000 »

не знаю в какой теме спросить :dont_know: немного не про С/С++, помогите .

есть сервер FTP с папкой source в которой каждый день создается файл с названием мм-дд-гг.csv (например сегодня 261120.csv завтра создаст 271120.csv и файлов в этой папки уже много)
есть компьютер на нем windows хр и папка Destination

нужно написать батник, чтобы виндувс сам копировал из source в час ночи вчерашний фай с расширением csv и вставлял в папку Destination

как поставить запуск этого bat-ника в определенные дни и часы через планировщик Windows, знаю.

написал батник на своем компе... копирует все дни, а нужно только вчерашний. :cry:

xcopy C:\Users\Компик\Desktop\source C:\Users\Компик\Documents\Destination ???????

понимаю что в компе есть календарь, но какой командой... как это связать... :oops: :dont_know:
Реклама
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Сообщение BlackKilkennyCat »

Реклама
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3931494#p3931494"]https://tecadmin.net/create-filename-with-datetime-windows-batch-script/[/uquote]
Допустим 1 января в час ночи он получит текущую дату 210101, а нужна дата предыдущего дня где отличаются год, день и месяц...
Лично я бы, наверное, набросал небольшую прогу на С#:

Код: Выделить всё

var date = DateTime.Now;
date = date.AddDays(-1);
string srcFileName = $"{date.Year - 2000}{date.Month:D2}{date.Day:D2}.csv";
File.Copy(srcFileName, dstFileName);
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Serzh2000,

Код: Выделить всё

powershell -command "((Get-date).AddDays(-1)).ToString('ddMMyyyy') | set-content '%TEMP%\tempDate'" && set /p dt=<%TEMP%\tempDate && del %TEMP%\tempDate"
copy c:\source\%dt%.csv c:\destination\%dt%.csv
1ая строка получит дату вчера и сохранит её во временный файл. Потом из него считает в переменную окружения %dt% и удалит временный файл. Во 2ой соб-но копируется с указанием переменной. Пример работы, где перед copy дописано echo, чтобы увидеть что будет копироваться:

Код: Выделить всё

C:\Users\nstorm>powershell -command "((Get-date).AddDays(-1)).ToString('ddMMyyyy') | set-content 'C:\Users\nstor\AppData\Local\Temp\tempDate'"   && set /p dt=  0<C:\Users\nstor\AppData\Local\Temp\tempDate  && del C:\Users\nstor\AppData\Local\Temp\tempDate"

C:\Users\nstorm>echo copy c:\source\25112020.csv c:\destination\25112020.csv
copy c:\source\25112020.csv c:\destination\25112020.csv
EDIT2: Работает в современных ОС, где есть PowerShell. В XP его надо будет установить отдельно: https://sysadmin.ru/articles/ustanavliv ... ax-windows

Добавлено after 2 minutes 38 seconds:
EDIT3: длиннючий скрипт для манипуляций с датой чисто на cmd, без PowerShell'а: https://ss64.com/nt/syntax-datemath.html

Добавлено after 2 minutes 53 seconds:
EDIT4: еще один костыль - bash для windows: https://steve.fi/software/bash/
Через него любой вариант shell-скрипта для bash а-ля Linux. Просто написать, если надо помогу.
Последний раз редактировалось NStorm Чт ноя 26, 2020 20:09:41, всего редактировалось 2 раза.
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Сообщение BlackKilkennyCat »

https://stackoverflow.com/questions/118 ... batch-file
здесь вроде покорече длинющего.
а так да, пауршелл покруче.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 867
Зарегистрирован: Пт фев 27, 2015 12:00:53
Откуда: Рязанская область

Сообщение Serzh2000 »

Спойлерpowershell -command "((Get-date).AddDays(-1)).ToString('ddMMyyyy') | set-content '%TEMP%\tempDate'" && set /p dt=<%TEMP%\tempDate && del %TEMP%\tempDate"
copy c:\source\%dt%.csv c:\destination\%dt%.csv
1ая строка получит дату вчера и сохранит её во временный файл.
спасибо!!! что помогаете!
я не до понял получит дату... нужен файл с именем 112520.cvs

Изображение
Реклама
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Serzh2000, формат вы раньше чуть другой писали ) хотя я год в 4 цифры написал. Ну поменяйте тогда ToString('ddMMyyyy') на ToString('MMddyy'). А расширение .csv там же при копировании добавляется.
Опытный кот
Аватара пользователя
Сообщения: 867
Зарегистрирован: Пт фев 27, 2015 12:00:53
Откуда: Рязанская область

Сообщение Serzh2000 »

Ну поменяйте тогда ToString('ddMMyyyy') на ToString('MMddyy').
догадался поменял... файл действительно с копировался!!!!

ОГРОМНОЕ ВАМ СПАСИБО!!! и ВСЕМ КТО БЫЛ НЕ РАВНОДУШЕН!!! :beer:
Друг Кота
Аватара пользователя
Сообщения: 20132
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

На Хабре попалось. Скажете без подсказки, чему равно:
1. 1^NaN
2. 0^NaN
3. NaN^0
?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Gudd-Head, без подсказки совсем, предположу что undefined behavior, и будет компиляторо-зависимое. (но это не так, правильный ответ нашел за 3 минуты гугления).
Вообще не понимаю вопросы, требующие ответа "без подсказки". Особенно такую экзотику. Кто будет в голове держать то, что в реальности может быть полезно знать раз в пятилетку и загуглить при необходимости не проблема?
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Gudd-Head",url="/forum/viewtopic.php?p=3932552#p3932552"]На Хабре попалось. Скажете без подсказки, чему равно:
1. 1^NaN
2. 0^NaN
3. NaN^0
?[/uquote]
Статья на хабре была несколько дней назад и там был пример для python со степенью. Это тема про C/C++, в этих языках есть NAN, а не Nan, а '^' обозначает вовсе не степень. Бинарные же операторы не работают для чисел с плавающей точкой, т.е. все эти примеры просто не скомпилируются...

ps. Оказывается только в ревизии стандарта IEEE 754 от 2008 года закрепили, что pow(1, NaN) и pow(NaN, 0) должны возвращать 1, раньше результатом мог быть и NaN, т.е. ANSI C совместимый компилятор из конца 90-х может возвращать что угодно :)
Прорезались зубы
Аватара пользователя
Сообщения: 211
Зарегистрирован: Пт окт 21, 2011 14:39:31

Сообщение FeCat »

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

Код: Выделить всё

const char TelMesALARM[] PROGMEM = {'$','9',' ','A','L','A','R','M','\r','\n','\0'};
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Сообщение BlackKilkennyCat »

Код: Выделить всё

const char TelMesALARM[] PROGMEM = "$9 ALARM\r\n\0";
насчёт последнего символа у меня сомнения. Вроде, должен автоматически добавлятся.
Последний раз редактировалось BlackKilkennyCat Вт дек 29, 2020 09:29:51, всего редактировалось 1 раз.
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

const char TelMesALARM[] PROGMEM = "$9 ALARM\r\n";
ps так и есть. автоматически
Прорезались зубы
Аватара пользователя
Сообщения: 211
Зарегистрирован: Пт окт 21, 2011 14:39:31

Сообщение FeCat »

Спасибо!
А как с кавычками, одинарными и двойными?
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

я проверял под винду и линукс без PROGMEM:
const char s[] = "$9 ALARM\r\n";

ps сейчас под AVR скомпилировалось
const char s[] PROGMEM = "$9 ALARM\r\n";
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Сообщение BlackKilkennyCat »

[uquote="FeCat",url="/forum/viewtopic.php?p=3950265#p3950265"]А как с кавычками, одинарными и двойными?[/uquote]
Также экранировать при помощи \
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="FeCat",url="/forum/viewtopic.php?p=3950265#p3950265"]А как с кавычками, одинарными и двойными?[/uquote]
На C++ можно даже так :)
Спойлер

Код: Выделить всё

const char* tree = R"===(
      *             ,
                       _/^\_
                      <     >
     *                 /.-.\         *
              *        `/&\`                   *
                      ,@.*;@,
                     /_o.I %_\    *
        *           (`'--:o(_@;
                   /`;--.,__ `')             *
                  ;@`o % O,*`'`&\
            *    (`'--)_@ ;o %'()\      *
                 /`;--._`''--._O'@;
                /&*,()~o`;-.,_ `""`)
     *          /`,@ ;+& () o*`;-';\
               (`""--.,_0 +% @' &()\
               /-.,_    ``''--....-'`)  *
          *    /@%;o`:;'--,.__   __.'\
              ;*,&(); @ % &^;~`"`o;@();         *
              /(); o^~; & ().o@*&`;&%O\
        jgs   `"="==""==,,,.,="=="==="`
           __.----.(\-''#####---...___...-----._
         '`         \)_`"""""`
                 .--' ')
               o(  )_-\
                 `"""` `
    )===";
Друг Кота
Аватара пользователя
Сообщения: 7385
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

[звучит гонг!]Эй, народ, хватит засорять тему про stm8, когда обсуждается чисто С.

Вот научите молодого и зелёного. В своём проекте, я наконец избавился от одного кода ("из книжки") который не желал работать даже при минимальнейшей оптимизации. Поэтому я надавил тапок в пол (поставил максимальную оптимизацию) и... теперь уже с моим кодом проблема. Так вот, изучая тот фрагмент где происходит косяк, подумал, что одно копирование я мог бы сделать с помощью DMA. И вот вопрос, а как правильно оформить функцию? Вот тут пару страниц назад приводил заголовок моей функции, которая и конфигурирует этот трансфер. А не должны ли эти указатели теперь быть ссылками на волатильные массивы, чтобы дальнейший код не подумал что там вечно нули?

[uquote="uldemir",url="/forum/viewtopic.php?p=3930461#p3930461"]Пытаюсь сделать копирование массивов с использованием ПДП...

Код: Выделить всё

void copy_data_dma (uint8_t * src, uint8_t * dst, uint16_t count) {
[/uquote]
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="uldemir",url="/forum/viewtopic.php?p=3955885#p3955885"]А не должны ли эти указатели теперь быть ссылками на волатильные массивы, чтобы дальнейший код не подумал что там вечно нули?[/uquote]Не должны. Это просто адреса буферов.
Ответить

Вернуться в «Разные вопросы по МК»