Команда копирования файла с указанием времени копирования
Как указать команду копирования файла чтобы в итоге имя получилось из заданного мною имени и даты и времени копирования?
|
Что-то наподобие такого?
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFile=%~1
if not defined sSourceFile goto :eof
if not exist "%sSourceFile%" goto :eof
set sDestPath=%~2
if not defined sDestPath goto :eof
if not exist "%sDestPath%\." goto :eof
for /f "tokens=1-3 delims=. " %%i in ('date /t') do set sDate=%%k%%j%%i
for /f "tokens=1-3 delims=: " %%i in ('time /t') do set sTime=%%k%%j%%i
copy "%sSourceFile%" "%sDestPath%\%~n1_%sDate%_%sTime%%~x1"
endlocal
exit /b 0
Первый параметр — исходный файл. Второй параметр — путь назначения. «date /t»/«time /t», помнится, работают, начиная с XP (???); кроме того, разбор зависит от региональных параметров (впрочем, здесь этот вопрос неоднократно разбирался — как «вытащить» эти данные из реестра и применить в разборе; кроме того, можно пользовать разбор «wmic.exe path win32_localtime get»).
|
Iska, много так всего мне непонятного. Можно как то проще с явным примером копирования файла 1.txt с диска с на d?
|
Для вышеприведённого пакетного файла вызов может быть такой:
Код:
modcopy.cmd "c:\My path\1.txt" "d:\"
Если текущим каталогом при вызове пакетного файла будет каталог с файлом «1.txt» — вызов можно сократить, например, до:
Код:
modcopy.cmd 1.txt "d:\"
«…явный пример…»
Плюём на параметры и проверки, данные пишем прямо в коде:
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFile=c:\My path\1.txt
set sDestPath=d:\
for /f "tokens=1-3 delims=. " %%i in ('date /t') do set sDate=%%k%%j%%i
for /f "tokens=1-3 delims=: " %%i in ('time /t') do set sTime=%%k%%j%%i
for %%i in ("%sSourceFile%") do copy "%sSourceFile%" "%sDestPath%\%%~ni_%sDate%_%sTime%%%~xi"
endlocal
exit /b 0
|
Iska, а если в тот первый батник засунуть команду копирования чтобы в одном батнике делать копирование? Как? И попроще без всего лишнего
|
Код:
copy "DIR1\file.txt" "DIR2\file_%DATE%_%TIME:~,2%%TIME:~3,2%%TIME:~6,2%.txt"
Код:
for /f "delims=+-" %%i In ('WMIC OS Get LocalDateTime^|find "."') do set DT=%%i
copy "DIR1\file.txt" "DIR2\file_%DT%.txt"
1-й вариант самый быстрый/короткий, но его реализация зависит от формата отображения даты/времени в региональных настройках, 2-й вариант свободен от привязки к локали, но WMIC работает медленно и для каждого файла его вызывать нежелательно
|
Цитата:
Цитата amel27
…WMIC OS Get LocalDateTime… »
|
Записал на память. Иногда требуется, чтобы буквально ткнули носом, дабы узреть очевидное ;). Фактически готовый формат, и именно в том виде, который требуется (для правильной сортировки создаваемых файлов). Самое интересное, что я и в VBScript, так же, «ручками» «клеил» строку формата из частей.
|
Время: 04:03.
© OSzone.net 2001-