Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Переименовать файл (http://forum.oszone.net/showthread.php?t=256348)

Mikhail_R 15-03-2013 09:49 2111613

Переименовать файл
 
Добрый день,

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

Спасибо!

Foreigner 15-03-2013 19:51 2111947

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

В общем возможны варианты, но на общий вопрос -- общий ответ. Уточняйте, если что.

Mikhail_R 18-03-2013 09:49 2113468

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%"

Вот подправленный для моих файлов код.

Foreigner 18-03-2013 20:43 2113884

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

)


Mikhail_R 19-03-2013 09:46 2114184

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

Код:

for %%i in ("d:\backup\entity.xml") do call:1 %%~ti
goto:eof
:1
ren "%outdir%\entity.xml" entity_sanctions_%1.xml

С предыдущим сообщением не получается:(

Спасибо!

Foreigner 19-03-2013 18:22 2114543

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"


Mikhail_R 20-03-2013 10:26 2114826

Огромное спасибо!!! Все работает!!
Код:

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, просто этих файлов неизвестно сколько может быть после распаковки.

Спасибо!

Foreigner 20-03-2013 20:33 2115165

Mikhail_R, попробуй так:
Код:

....
mkdir "D:\Work\RStyle\bat\entity_sanctions_%datetime: =-%"

move entity_sanctions_%datetime: =-%.xml.part*.xml "D:\Work\RStyle\bat\entity_sanctions_%datetime: =-%"


Mikhail_R 21-03-2013 09:35 2115422

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


Время: 23:35.

Время: 23:35.
© OSzone.net 2001-