Скопировать файл с хитрым именем

Плохой админ 01.07.2004 - 12:58 | Надо каждый день копировать файл с именем "<сегодняшняя дата>еще-что-то.xml" То есть сегодня это файл 010704abc.xml (или 040701abc.xml неважно), завтра 020704cde.xml и т.д. Есесно пишется батник: if exist... copy... А вот как указать что надо скопировать именно файл с таким хитрым именем?
ALEX SE 1 - 01.07.2004 - 13:03 | Так и указывай, через переменную окружения %date%
Плохой админ 2 - 01.07.2004 - 13:08 | Поподробнее пожалуйста... %date% выводит данные вида "Чт 01.07.04" Как от этого перейти к имени файла?
ALEX SE 3 - 01.07.2004 - 13:11 | Пропарсить убрав день недели :)
QQQQ 4 - 01.07.2004 - 13:12 | #!/usr/bin/perl use POSIX qw(strftime); use Win32API::File 0.08 qw( :ALL ); $NewFileName = strftime "%d_%m", localtime; MoveFile( "010704abc.xml", "$NewFileName.xml");
QQQQ 5 - 01.07.2004 - 13:31 | опс сори яж не то написал -)) это переименование в текушую дату -)
Loco 6 - 01.07.2004 - 13:34 | А чо прогу написать на чем нибуть не вариант, или скрипт на VB?
Плохой админ 7 - 01.07.2004 - 13:34 | (5) Я догадался :-) Лучше обойтись без Перла, в лучшем случае VBS
Плохой админ 8 - 01.07.2004 - 13:37 | (6) Не настолько хорошо VB знаю :-( Помоги перейти от текущей даты к имени файла, тогда дальше может разберусь...
Loco 9 - 01.07.2004 - 13:43 | Ну напиши прогу на том че знаешь и запускай exe'шник из bat'ника
Andy_user 10 - 01.07.2004 - 13:43 | Создаете файл 1.vbs такого содержания: ---- Set wshshell = WScript.CreateObject("WScript.Shell") CurD = Date() '**** String 01.07.2004 or 01.07.04 **** My_Str =".\1.bat " My_Str =My_Str & Mid(CurD,1,2) & Mid(CurD,4,2) & Mid(CurD,7,2) Return = wshshell.Run (My_Str, 1, True) Wscript.Quit --- В той же директории создаете файл 1.bat такого содержания: --- echo %1 pause --- Пробуйте запустить файл 1.vbs Дальше скорректируете bat-файл так,как Вам надо.
Плохой админ 11 - 01.07.2004 - 13:54 | Andy_user большое спавибо. Помогло... Пиво бы поставил, но думаю мы не совместимы территориально :-(
QQQQ 12 - 01.07.2004 - 15:14 | вот... раз первый раз сумничать не получилось -) правильный вариант (малость можно переделать чтоб только начало названия файла хавал, но некогда) ######## #!/usr/bin/perl use POSIX qw(strftime); use File::Copy; my $dir="D:\\ARCH"; files($dir); sub files{ my $cur_dir = shift; chdir $cur_dir; foreach(<*>){ if (-f "$cur_dir\\$_") { action("$cur_dir\\$_"); } } } sub action{ my $file = shift; $FileName = strftime "%d%m%yabc", localtime; if ($file eq "$dir\\$FileName.rar"){ copy("$FileName.rar","D:\\ARCH\\qwerty\\$FileName.rar"); exit;}; }
9600 13 - 01.07.2004 - 15:33 | Ну вы блин и динозавры. Вы еще под НЕТ платформой ченить напишите. //-------------- SET ttt=%date% set ddd=%ttt:~-10% //--------------- Переменная ddd содержит дату в формате dd.mm.yyyy Далее сам дерзай
QQQQ 14 - 01.07.2004 - 15:36 | -)))) мы простых путей не ищем -)) //----------- >> Вы еще под НЕТ платформой ченить напишите На данный момент это мне не интересно -))
Andy_user 15 - 01.07.2004 - 16:01 | To 9600: Поясните. Выполняю в батнике предложенные Вами две команды SET, вывожу значение ddd и ничего не получается... У Вас это работает ??
_van 16 - 01.07.2004 - 17:39 | вот эта строчка точно работает: echo %date:~9,4%.%date:~6,2%.%date:~3,2% посмотри тему cmd* в разделе форума "операционные системы"
Точка 17 - 01.07.2004 - 18:17 | Во наворотили. Парсить еще... нафик надо. :Р Согласна с _van'ом, первый вариант, который приходит на ум: if exist "C:\abc.xml" copy "C:\abc.xml" "C:\%date:~0,2%%date:~3,2%%date:~8,2%abc.xml"
Точка 18 - 01.07.2004 - 19:00 | Еще раз перечитала исходный вопрос. Похоже неправиьлно поняла вопрос. Предыдущий вариант копирует фиксированный файл с именем + текущая дата. А нужно копировать файл, сформированный предыдущим днем? Если так, то (файл "last_day.txt" естественно с датой предыдущего дня): for /f "tokens=1" %%i in (last_day.txt) do set last_day=%%i set last_file="%last_day:~0,2%%last_day:~3,2%%last_day:~8,2%abc.xml" if exist %last_file% copy %last_file% "%date:~0,2%%date:~3,2%%date:~8,2%abc.xml" del "last_day.txt" date /t > last_day.txt
Andy_user 19 - 01.07.2004 - 19:05 | To Точка: Еще раз предлагаю перечитать вопрос... Там нет ни слова об операционной системе. Например, на Windows NT 4.0 Server предложенное Вами не работает. Зато VBS-скрипт работает начиная с Windows 95 и выше.
Точка 20 - 01.07.2004 - 19:10 | Перечитала. О системе нет, зато есть фраза: "Есесно пишется батник: if exist... copy..." Вот батник и получил - раз. Два - насчет НТсерв возможно, как-то не приходилось сталкиваться. И три - если не написал какая система, то проблемы с корректной работой уже автора. ;)
_van 21 - 01.07.2004 - 21:46 | Точка, правильно написано НО МОЖЕШЬ НАСТУПИТЬ НА НЕПРИЯТНЫЕ ГРАБЛИ: for /f "tokens=1" %%i Задавай %%i с большой буквы, так как иначе в теле цикла гдето может подставится другая переменная, тоже называющаяся i, используемая выше. P.S.: выше я указал тему, где для w2k решена мной почти таже задача.
Точка 22 - 02.07.2004 - 00:45 | И незачем так орать. ;) Насчет маленьких/больших символов я обычно отслеживаю где какие переменные используются, а для этого конкретного примера большего и не требуется. Хотя за совет все равно спасибо. :)
eprst 23 - 02.07.2004 - 01:15 | Точка, мужа надо ублажать а не чатить тута
Точка 24 - 02.07.2004 - 01:20 | Звиняйте, у Вас не спросила. :Р
eprst 25 - 02.07.2004 - 01:47 | Чулок Синий
ip 26 - 02.07.2004 - 13:35 | Плохой админ! сКИНЬ свое мыло по почте я тебе утилитку сброшу делает то что тебе нужно. Сам ее пользуюсь уже лет 8
mogila 27 - 02.07.2004 - 13:58 | to ip. Можешь забросить, если не сложно. Спасибо.
volk 28 - 02.07.2004 - 14:12 | to ip. Можешь и мне забросить, если не сложно. Благодарен...
не успел 29 - 02.07.2004 - 18:14 | DATE /t > %%D_Date%% set local FOR /F " tokens=2,3,4 delims=. " %%i in (%%D_Date%%) do call datecmd.cmd %%k%%j%%i del %%D_Date%%

>>