Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименовать файл

Ответить
Настройки темы
CMD/BAT - [решено] Переименовать файл

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день,

Может подскажет кто-нибудь, как совершить такое действие: необходимо вытащить из архива файл и добавить к его имени дату создания данного файла.

Спасибо!

Отправлено: 09:49, 15-03-2013

 

Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Mikhail_R,
Если заранее известен файл (из test.zip надо извлечь test.txt, который в корне архива):
Код: Выделить весь код
@echo off
setlocal

set "outdir=%userprofile%\desktop"
set "path=%path%;%programfiles%\7-zip"

7z e test.zip test.txt -o"%outdir%"
for %%i in ("%outdir%\test.txt") do call:1 %%~ti
goto:eof

:1
ren "%outdir%\test.txt" %1_test.txt
В общем возможны варианты, но на общий вопрос -- общий ответ. Уточняйте, если что.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:51, 15-03-2013 | #2



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

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


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Foreigner, спасибо большое! Теперь только еще пару вопросов: Как в это же имя внести дату последнего изменения?

Код: Выделить весь код
@echo off 
setlocal 
set "outdir=d:\backup" 
set "path=%path%;%programfiles%\7-zip" 
7z e "D:\Work\RStyle\bat\PIDGWL.ZIP" entity.xml -o"%outdir%" 
for %%i in ("d:\backup\entity.xml") do call:1 %%~ti
 goto:eof 
:1
 ren "%outdir%\entity.xml" entity_sanctions_%1.xml 
for %%f in (entity_sanctions_%1.xml) do set FILE=%%f
 "C:\Program Files\IBM\Lotus\Notes\jvm\bin\java.exe" Test "%FILE%"
Вот подправленный для моих файлов код.

Последний раз редактировалось Mikhail_R, 18-03-2013 в 18:02.


Отправлено: 09:49, 18-03-2013 | #3


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Mikhail_R,
Это и есть дата последнего изменения. Можно узнать и время создания и доступа и изменения, но это сильно усложнит батник. Вот пример, как можно получить все эти данные:
Код: Выделить весь код
wmic datafile where name="C:\\Folder\\test.txt" get creationdate, lastaccessed, lastmodified /value
Чтобы привести в божеский вид:
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion

set "wmic=wmic datafile where name="C:\\Folder\\test.txt" get creationdate, lastaccessed, lastmodified /value"

for /f "tokens=*" %%i in (' "%wmic%" ') do 1>nul set "%%i"

for %%i in (CreationDate LastAccessed LastModified) do (

    set "%%i=!%%i:~6,2!.!%%i:~4,2!.!%%i:~0,4! !%%i:~8,2!:!%%i:~10,2!:!%%i:~12,2!"
    set %%i

)
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:43, 18-03-2013 | #4


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Я, конечно, дико извиняюсь, что туплю, но можно время последнего изменения подставить в имя файла:
(вот здесь только дата подставляется)

Код: Выделить весь код
for %%i in ("d:\backup\entity.xml") do call:1 %%~ti 
goto:eof 
:1 
ren "%outdir%\entity.xml" entity_sanctions_%1.xml
С предыдущим сообщением не получается

Спасибо!

Последний раз редактировалось Mikhail_R, 19-03-2013 в 09:58.


Отправлено: 09:46, 19-03-2013 | #5


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Mikhail_R,
Без секунд:
Код: Выделить весь код
for %%i in ("d:\backup\entity.xml") do call:1 "%%~ti" 
goto:eof 

:1
set "datetime=%~1"
set "datetime=%datetime::=-%"

ren "%outdir%\entity.xml" "entity_sanctions_%datetime: =_%.xml"
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:22, 19-03-2013 | #6


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Огромное спасибо!!! Все работает!!
Код: Выделить весь код
for %%f in ("entity_sanctions_%datetime: =-%.xml") do set FILE=%%f 
"C:\Program Files\IBM\Lotus\Notes\jvm\bin\java.exe" Test "%FILE%" 
mkdir "D:\Work\RStyle\bat\entity_sanctions_%datetime: =-%"
После переименования, имя файла подставляется в java функцию и там он разбивается на много файлов с такими именами entity_sanctions_12.03.2013-18-54.xml.part<число>.xml
вопрос по bat: как вот эти все файлы entity_sanctions_12.03.2013-18-54.xml.part<число>.xml переложить в папку entity_sanctions_12.03.2013-18-54, просто этих файлов неизвестно сколько может быть после распаковки.

Спасибо!

Последний раз редактировалось Mikhail_R, 20-03-2013 в 11:28.


Отправлено: 10:26, 20-03-2013 | #7


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Mikhail_R, попробуй так:
Код: Выделить весь код
....
mkdir "D:\Work\RStyle\bat\entity_sanctions_%datetime: =-%"

move entity_sanctions_%datetime: =-%.xml.part*.xml "D:\Work\RStyle\bat\entity_sanctions_%datetime: =-%"
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:33, 20-03-2013 | #8


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Работает как часы!! Спасибо большое!

Отправлено: 09:35, 21-03-2013 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименовать файл

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Службы - Переименовать открытый файл или папку G-Simon Microsoft Windows 7 6 13-09-2012 20:46
BSOD - не могу переименовать файл alex1311 Хочу все знать 11 04-02-2012 19:13
Переименовать файл в Seven x64. Как? Pozia AutoIt 1 04-11-2010 23:39
[решено] Переименовать файл cra5h_ AutoIt 12 11-01-2010 16:58
[решено] Как переименовать файл в AutoIt? evg64 AutoIt 4 21-12-2009 08:09




 
Переход