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

Вчерашняя дата в имени файла

28.10.2015, 08:45. Просмотров 3902. Ответов 13
Метки нет (Все метки)

за сегодняшний день получается так %date:~0,2%%date:~3,2%%date:~6,4%
а как сделать за вчерашний?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2015, 08:45
Ответы с готовыми решениями:

Дата и время в имени файла. Вместо нуля пишется пробел
Здравствуйте форумчане. До наступления 2014 года строка работала: собственно создание файла......

Перемещение на флешку только того файла, в имени которого присутствует сегодняшняя дата
Здравствуйте. встала такая задача. Нужно создать батник. на диске с:\work каждый день создаются...

Синтаксическая ошибка в имени файла, имени папки или метке тома
Здравствуйте. Выполняю лаб. работу в cmd, в которой есть задание связанные с командой "Copy"....

Разница в работе bat-файла при его запуске от имени простого пользователя и от имени администратора
Здравствуйте. Пытаюсь создать .bat который: создаёт папку %ProgramFiles%\MyProg и копирует туда...

Сообщение об ошибке "Синтаксическая ошибка в имени файла, имени папки или метке тома."
Всем доброй ночи, уважаемые форумчане! Делаю лабораторную работу, вот текст примера: D: Cd...

13
alpap
1879 / 1379 / 453
Регистрация: 26.04.2015
Сообщений: 4,677
28.10.2015, 09:59 2
djslayer, Толко так:
Windows Batch file
1
2
3
4
@echo off
set /p "sday=Введите день месяца "
rem:>"%Userprofile%\Desktop\%sday%.%date:~3,2%.%date:~6,4%.txt"
exit
.
0
djslayer
1 / 1 / 0
Регистрация: 05.02.2014
Сообщений: 114
28.10.2015, 10:07  [ТС] 3
Так не пойдет, завача автоматом сделать, так можно и в ручную переименовать, но все равно спасибО!
0
greg zakharov
Покинул форум
2216 / 885 / 248
Регистрация: 07.05.2015
Сообщений: 1,781
28.10.2015, 11:46 4
Цитата Сообщение от djslayer
а как сделать за вчерашний?
На чистом командном языке сделать можно, но нудно, особенно учитывая вычисление количества дней в предыдущем месяце, если при уменьшении текущего дня на единицу получаем нуль. Чтобы упростить себе решение задачи, можно использовать mshta:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo off
  setlocal
    set "b=mshta vbscript:Execute("CreateObject(""Scripting.FileSystemObject"")"
    set "b=%b%.GetStandardStream(1).Write("
    set ^"e=):Close"^)"
 
    for /f %%i in ('%b%Date-1%e%') do set "d=%%i"
    echo:%d:.=%
  endlocal
exit /b
Либо, использовать PowerShell:
Windows Batch file
1
@powershell /nop /ex bypass /com "&{(Get-Date).AddDays(-1).ToString('ddmmyyyy')}"
И да, не совсем понятно для чего выбирать день, месяц и год из даты отдельно, чтобы увидеть дату без разделителей, когда достаточно:
Windows Batch file
1
echo:%date:.=%
1
Garry Galler
1908 / 1448 / 550
Регистрация: 28.10.2013
Сообщений: 3,709
28.10.2015, 12:34 5
Полное решение задания темы на powershell.
1) Работает на ОС не ниже windows 7
2) Для реального переименования нужно убрать параметр %wi% в конце команды или присвоить параметру wi пустое значение:set "wi=".
3) Имя файла и дата отделяются знаком, который задается в параметре set "d=_"
4) Варианты форматов даты задаются в параметре format.
Куда прописывать путь, надеюсь понятно.
Windows Batch file
1
2
3
4
5
6
7
8
9
@echo off
set "wi=-WhatIf"
set "d=_"
set format='ddMMyyyy'
set format2='dd.MM.yyyy'
for /f "delims=" %%i in ('dir /a-d /b/s d:\test') do (
  powershell -ex bypass "&{ren '%%i' ('%%~ni' + '%d%' + $((date).AddDays(-1).ToString(%format%)) + '%%~xi') %wi%}"
)
pause
1
alpap
1879 / 1379 / 453
Регистрация: 26.04.2015
Сообщений: 4,677
28.10.2015, 13:24 6
djslayer, В задании нужна вчерашняя дата, если надо автоматически, это реализовывается так:
Windows Batch file
1
2
3
4
@echo off
set /a sday=%date:~0,2%-1
rem:>"%Userprofile%\Desktop\%sday%.%date:~3,2%.%date:~6,4%.txt"
exit
.
0
Garry Galler
1908 / 1448 / 550
Регистрация: 28.10.2013
Сообщений: 3,709
28.10.2015, 13:31 7
alpap,
Допустим, сегодня первое число месяца. Какая будет вчерашняя дата, если из нее просто вычесть 1?
0
greg zakharov
28.10.2015, 13:40
  #8

Не по теме:

Garry Galler, реплика alpap выдала очевидное: никто не читает предшествующие посты. Ну или почти никто.

0
alpap
1879 / 1379 / 453
Регистрация: 26.04.2015
Сообщений: 4,677
28.10.2015, 13:43 9
Garry Galler, Согласен, об этом не подумал
0
sov44
1760 / 744 / 128
Регистрация: 09.04.2011
Сообщений: 1,314
28.10.2015, 16:52 10
из загашника
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@echo off
setlocal enabledelayedexpansion
 
set d=%date:~0,2%
set m=%date:~3,2%
set y=%date:~6,4%
 
if %d:~0,1%==0 set d=%d:~1%
if %m:~0,1%==0 set m=%m:~1%
 
set /a feb=y%%4
if %feb%==0 (set feb=29) else (set feb=28)
 
set /a tok=m-1
if %tok%==0 set tok=12
for /f "tokens=%tok%" %%i in ("31 %feb% 31 30 31 30 31 31 30 31 30 31") do (
   set /a d-=1
    if !d!==0 (
        set d=%%i
        set m=%tok%
        if !m!==12 set /a y-=1
    )
)
 
set d=0%d%
set m=0%m%
set yesterday=%d:~-2%.%m:~-2%.%y%
 
echo %yesterday%
pause
2
alpap
1879 / 1379 / 453
Регистрация: 26.04.2015
Сообщений: 4,677
28.10.2015, 23:52 11
djslayer, Mожно так:
Windows Batch file
1
2
3
@echo off
for /f "delims=" %%i in ('powershell "(Get-Date).AddDays(-1)"') do set "sdate=%%i"
pause
, вот только не знаю как получить дату в виде дд.мм.гггг, кто подскажет буду благодарен.
1
b0gus
271 / 170 / 73
Регистрация: 17.03.2014
Сообщений: 493
29.10.2015, 00:35 12
sov44, более корректно 12-ю строку изложить так:
Windows Batch file
12
if NOT %feb%==0 (set feb=28) else (set /a y/=100,y%%=4 & if !y!==0 (set feb=29) else (set feb=28))
Добавлено через 8 минут
оопс, проглядел, что "y" используется ниже, заменил на "yt", нужно читать так:
Windows Batch file
12
set yt=%y% & if NOT %feb%==0 (set feb=28) else (set /a yt/=100,yt%%=4 & if !yt!==0 (set feb=29) else (set feb=28))
1
alpap
1879 / 1379 / 453
Регистрация: 26.04.2015
Сообщений: 4,677
29.10.2015, 11:35 13
djslayer, Нашел сам уже, если не XP (придеться скачать Powershell):
Windows Batch file
1
2
3
@echo off
for /f "delims=" %%i in ('powershell "(Get-Date).AddDays(-1).ToString('dd.MM.yyyy')"') do rem:>"%%i.txt"
pause
.

Добавлено через 14 минут
И с такой строкой работает:
Windows Batch file
1
...powershell "Get-Date(Get-Date).AddDays(-1) -format d"...
1
swssnif
0 / 0 / 0
Регистрация: 27.11.2017
Сообщений: 1
27.11.2017, 14:03 14
Всем здравствуйте, а скажите пожалуйста:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@echo off
setlocal enabledelayedexpansion
 
set d=%date:~0,2%
set m=%date:~3,2%
set y=%date:~6,4%
 
if %d:~0,1%==0 set d=%d:~1%
if %m:~0,1%==0 set m=%m:~1%
 
set /a feb=y%%4
if %feb%==0 (set feb=29) else (set feb=28)
 
set /a tok=m-1
if %tok%==0 set tok=12
for /f "tokens=%tok%" %%i in ("31 %feb% 31 30 31 30 31 31 30 31 30 31") do (
   set /a d-=1
    if !d!==0 (
        set d=%%i
        set m=%tok%
        if !m!==12 set /a y-=1
    )
)
 
set d=0%d%
set m=0%m%
set yesterday=%d:~-2%.%m:~-2%.%y%
 
echo %yesterday%
pause
в этом примере как сделать не 1 а 7 дней?
0
27.11.2017, 14:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2017, 14:03

Сравнение по имени файла к имени файла
Имеется вот такой код при его выполнении я получаю не то что мне нужно. For /R...

Изменить даты и время создания файла, взяв информацию из имени файла
Привет! Есть файл "Call@recording@005_20150216113542.mp3" В его имени после "_" идёт дата...

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


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

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

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