Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
spu164
0 / 0 / 1
Регистрация: 05.07.2016
Сообщений: 41
1

Вычесть месяц в cmd файле

01.09.2016, 07:44. Просмотров 2309. Ответов 6
Метки нет (Все метки)

Возникла потребность первого числа текущего месяца выполнять файл за предыдущий месяц.
С вычитанием месяца возникли сложности, если кто знает, очень прошу помочь.
Windows Batch file
1
2
3
4
5
6
Set _PARSEARG="eol=; tokens=1,2,3,4* delims=/,. "
For /F %_PARSEARG% %%i in ('date /t') Do SET _YYYY=%%k
For /F %_PARSEARG% %%i in ('date /t') Do SET _MONTH=%%j
 
if %DAY%=='01' Set /A SET /a newdate=%MONTH%-1
set dt=%_YYYY_MM_DD%%_HHMM%\
и как потом еще в название файла zzz%MONTH% вставить эту переменную newdate?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2016, 07:44
Ответы с готовыми решениями:

В cmd-файле понять запускался ли сегодня файл
Есть скрипт cmd, который стартует при включении компьютера. Комп, в нормальных условиях,...

CMD Поиск текста в файле + Копирование + переименовывание
Помогите написать .bat с параметрами выполнения поиска слова в файле, если есть то скопировать и...

Как в bat-файле запустить cmd, в котором выполнится инструкция 'node server'?
Как в bat файле запустить cmd, в котором выполнится инструкция 'node server' ?

Как написать cmd создающий другой cmd
Добрый день. Смысл в том, чтобы создать CMD с настройками текущего ПК: имя компьютера и имя...

Найти в текстовом файле в строке дату и поменять в предыдущей строке соответственно дате месяц
Здравствуйте гуру. Кто нить осилит задачу: Имеется текстовый файл . В этом файле в некоторых...

6
YuS_2
Любознательный
1221 / 664 / 200
Регистрация: 10.03.2016
Сообщений: 1,544
01.09.2016, 10:30 2
Цитата Сообщение от spu164 Посмотреть сообщение
С вычитанием месяца возникли сложности
Windows Batch file
1
2
3
for /f %%a in ('wmic path win32_LocalTime get * /value^|findstr /br "Day Month Year"') do set "%%a"
echo %Month%
echo "%Day%" "%Month%" "%Year%"
Цитата Сообщение от spu164 Посмотреть сообщение
в название файла zzz%MONTH% вставить эту переменную newdate?
Windows Batch file
1
2
for %%i in ("file.txt") do set name=%%~ni&&set ext=%%~xi
ren %name%%ext% %name%%Month%%ext%
1
spu164
0 / 0 / 1
Регистрация: 05.07.2016
Сообщений: 41
01.09.2016, 13:38  [ТС] 3
Выполнил ваш код. В переменную
Windows Batch file
1
2
echo %Month%
echo "%Day%" "%Month%" "%Year%"
он также заносит число 9, а мне нужно на 1 месяц меньше (должен получится 8 месяц).
Или возможно я что то не допонял.
0
greg zakharov
Покинул форум
2401 / 991 / 281
Регистрация: 07.05.2015
Сообщений: 1,991
01.09.2016, 13:57 4
Лучший ответ Сообщение было отмечено spu164 как решение

Решение

Если сценарий должен выполняться каждое первое число месяца, то проще, пожалуй, будет так:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
  setlocal
    call:getdaysago 1 date
    set /a "month=1%date:~3,2%-100"
    echo %month%
  endlocal
exit /b
 
:getdaysago
  set "s=mshta vbscript:Execute("CreateObject("
  set "s=%s%""Scripting.FileSystemObject"")"
  set "s=%s%.GetStandardStream(1).Write("
  set ^"e=):Close"^)"
  for /f %%# in ('%s% Date-%1 %e%') do set "%2=%%#"
exit /b
2
YuS_2
Любознательный
1221 / 664 / 200
Регистрация: 10.03.2016
Сообщений: 1,544
01.09.2016, 13:58 5
Лучший ответ Сообщение было отмечено spu164 как решение

Решение

Цитата Сообщение от spu164 Посмотреть сообщение
должен получится 8 месяц
Хмм...
Windows Batch file
1
2
3
4
5
6
@echo off
for /f %%a in ('wmic path win32_LocalTime get * /value^|findstr /br "Day Month Year"') do set "%%a"
echo "%Day%" "%Month%" "%Year%"
set /a bef_mth=Month-1
for %%i in ("file.txt") do set name=%%~ni&&set ext=%%~xi
ren %name%%ext% %name%%bef_mth%%ext%
1
spu164
0 / 0 / 1
Регистрация: 05.07.2016
Сообщений: 41
01.09.2016, 14:11  [ТС] 6
YuS_2,Так тоже не получилось.
Windows Batch file
1
set /a bef_mth=Month-1
Пишет 9, но
при записи
Windows Batch file
1
2
set /a bef_mth-=1
set bef_mth=%bef_mth%
удалось получить 8 месяц.
Может у меня командная строка просто не поняла такую запись вычитания.

Если сценарий должен выполняться каждое первое число месяца
Не, каждый день. раз в месяц я бы и не заморачивался так. Приму ваш код тоже на вооружение.
0
YuS_2
Любознательный
1221 / 664 / 200
Регистрация: 10.03.2016
Сообщений: 1,544
01.09.2016, 14:23 7
Цитата Сообщение от spu164 Посмотреть сообщение
Так тоже не получилось.
Рядом с батником положите файл c наименованием "file.txt", результат будет в нем видно...
А 9 месяц там выводится по команде:
Windows Batch file
1
echo "%Day%" "%Month%" "%Year%"
Если желаете увидеть визуально преобразование, добавьте после строки с вычитанием вывод значения переменной,так:
Windows Batch file
1
2
set /a bef_mth=Month-1
echo bef_mth: %bef_mth%
1
01.09.2016, 14:23
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2016, 14:23

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Из всех положительных элементов вычесть А из всех отрицательных вычесть В
дан массив вещественных чисел.Из всех положительных элементов вычесть А из всех отрицательных...

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

База данных. Вычисления: кол-во заказов за месяц, прибыли за месяц
Есть начало БД. Нужно добавить: запросы и отчеты Запросы: - Вычисления: кол-во заказов за месяц,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.