Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Windows > автоматизация переименования папки


Автор: Dgin 26.5.2008, 18:11
У меня такая задача:
Нужно скопировать файл с диска c:\...\pav.sig в d:\..\temp\
После этого надо переименовать папку temp по маске *x*, где x =25 мая (то есть день и месяц, когда происходит эта операция)
Как автоматизировать этот процесс?

Автор: mihanik 26.5.2008, 18:48
Dgin, приведи пример.
Что-то я не совсем понял вопроса...

Автор: Dgin 26.5.2008, 19:07
Ну например я создаю bat-файл для этой операции:
copy /y c:\...\pav.sig d:\..\temp\
ren temp ...дальше я не знаю как придать папке имя, состоящее из сегодняшнего числа и месяца.

Может можно *.vb-скрипт написать, но я в этом не разбираюсь, или иным путем это проделать.
Операция запуска *.bat файла происходит в разные дни, поэтому и имя будет разное у папки temp

Автор: mihanik 26.5.2008, 19:31
Код

ren temp %date%

Автор: Dgin 26.5.2008, 19:38
Ну хорошо, а если я завтра запущу этот батник, то
ren temp %date% уже не выполнится, потому что папки temp уже не будет, надо будет переименовывать папку %date%

Автор: mihanik 26.5.2008, 19:54
Та-а-а-ак...
Батенька!
Кто Вас учил технические задания ставить?
Мы, конечно, тут все экстрасенсы, но не настолько же...

Итак.
Резюмирую.
1. Где-то на диске "d:" есть папка (назовём её "папка А").
Это в корне диска или в какой-то подпапке?
Если в какой-то подпапке (допустим "папка В"), то что в "папке В" ещё есть кроме "папки А"?

2. Каждый день "папка А" меняет своё имя. Имя получается из текущей даты методом взятия месяца и числа.

3. Каждый день в "папку А" копируются откуда-то файлы...

Внимание!
Вопрос: нафига всё это?
Проще никак нельзя?


Автор: Dgin 26.5.2008, 20:02
1. Ответ: в подпапке, как вы пишете, то будет D:/B/A  В папке B еще есть файлы *.exe *.txt и др.

Ну основная задача состоит в copy /y c:\...\pav.sig d:\..\temp\
А переименование, если никто не поможет, то ... не будет его.

Автор: 01MDM 26.5.2008, 21:26
А какой смысл сначала копировать в temp, а потом ее переименовывать? Копируй сразу в папку с датой в названии.

Код

xcopy "c:\...\pav.sig" "d:\...\%date%\"


Конечный слеш обязателен если папка не существует

Или если temp нужна, то
Код

@echo off
copy "c:\...\pav.sig" "d:\...\temp"
ren "d:\...\temp" "d:\...\%date%"
md "d:\...\temp"

Автор: Dgin 26.5.2008, 21:51
Ты не понял, батник запускается не один раз, и дело не в папке temp.
привожу пример:
26 мая, файл c:\pav.sig копируется в папку d:\PAP 26 мая hapo
27 мая, файл c:\pav.sig копируется в папку d:\PAP 26 мая hapo, папка d:\PAP 26 мая hapo превращается в d:\PAP 27 мая hapo
28 мая, файл c:\pav.sig копируется в папку d:\PAP 27 мая hapo, папка d:\PAP 27 мая hapo превращается в d:\PAP 28 мая hapo
29 мая, файл c:\pav.sig копируется в папку d:\PAP 28 мая hapo, папка d:\PAP 28 мая hapo превращается в d:\PAP 29 мая hapo
...............................
1 июня, файл c:\pav.sig копируется в папку d:\PAP 31 мая hapo, папка d:\PAP 31 мая hapo превращается в d:\PAP 1 июня hapo
2 июня, файл c:\pav.sig копируется в папку d:\PAP 1 июня hapo, папка d:\PAP 1 июня hapo превращается в d:\PAP 2 июня hapo

и так до бесконечности, слово PAP или hapo можно убрать.

Автор: Dgin 26.5.2008, 22:12
А чтоб русские имена папок понимались надо в батник вначале какой-то *.nls-файл вроде вписать?

Автор: 01MDM 26.5.2008, 22:14
Если папка с предыдущей датой не нужна,то 
Код

@echo off
:: Кодировка если батник сохранен в cp1251 и присутсвуют русские названия. Если cp866 - необязательно
chcp 1251 >nul

:: Удаляем папку у которой в названии есть год (2008)
for /f %%i in ('dir /b /ad d:\ ^| findstr %date:~-4%') do rd %%i 2>nul

:: Копируем файл в папку с текущей датой
xcopy "c:\pav.sig" "d:\%date%\"

Автор: Akella 30.5.2008, 22:29
Можно в инете поискать утилиты переименования, их, поверь, хватает smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)