Войти

Показать полную графическую версию : [решено] Переименование, если файл с таким именем уже существует...


Pshek
12-08-2010, 17:57
В папке "MAIL" время от времени появляется файл "Post.zip", после чего он автоматически отправляется и после отправки копируется в папку "SentMail" и каждый следующий автоматически заменяет предидущий... Как сделать, чтобы файл не заменялся, а переименовывался, например добавлялся номер по порядку...

Например: Post.zip
Post_2.zip
Post_3.zip

Отправку и перемещени выполняет DOS-вертушка, параметры которой и записываются в bat-файле


Заранее спасибо =)

gora
12-08-2010, 18:14
файл не заменялся, а переименовывался, например добавлялся номер по порядку... »
@Echo Off
Set input=MAIL
Set output=SentMail
Set cn=
:_loop
If Exist "%output%\Post%cn%.zip" Set /a cn+=1& Goto _loop
Copy "%input%\Post.zip" "%output%\Post%cn%.zip">Nul

Pshek
12-08-2010, 18:21
Списибо...

Pshek
12-08-2010, 19:00
А если, к примеру, есть с десяток разных по имени файлов, но у каждого из них таже история???

gora
12-08-2010, 19:17
есть с десяток разных по имени файлов, но у каждого из них таже история »
Т.е., в папке MAIL есть файлы с разными именами и расширениями и все эти файлы нужно скопировать по тому же принципу в папку SentMail? Или не все нужно копировать, то кто должен определить какие нужно копировать, а какие нет?

Или этот десяток имен фиксированный?

Pshek
12-08-2010, 19:29
Копировать нужно все...
Или этот десяток имен фиксированный? »
В основном да, но иногда встречаются незнакомые или редко употребляемые...

gora
12-08-2010, 19:42
@Echo Off
Set input=MAIL
Set output=SentMail
For /F "UseBackQ Delims=" %%I In (`Dir "%input%" /B 2^>Nul`) Do Call :_copyF "%%I"
Exit
:_copyF
Set cn=
:_loop
If Exist "%output%\%~n1%cn%%~x1" Set /a cn+=1& Goto _loop
Copy "%input%\%~1" "%output%\%~n1%cn%%~x1">Nul
GoTo :EOF

Pshek
12-08-2010, 19:44
Спасиб =)

@Echo Off
Set input=MAIL
Set output=SentMail
For /F "UseBackQ Delims=" %%I In (`Dir "%input%" /B 2^>Nul`) Do Call :_copyF "%%I"
Exit
:_copyF
Set cn=
:_loop
If Exist "%output%\%~n1%cn%%~x1" Set /a cn+=1& Goto _loop
Copy "%input%\%~1" "%output%\%~n1%cn%%~x1">Nul
GoTo :EOF »

Блин, упустил один момент... Нужно, чтобы вышеуказанные действия проходили только с архивами.

gora
12-08-2010, 19:53
только с архивами »
Какими? Какое расширение у файла архива?

Pshek
12-08-2010, 20:03
Какими? Какое расширение у файла архива? »
zip и rar

gora
12-08-2010, 20:20
@Echo Off
Set input=MAIL
Set output=SentMail
Set ext=rar zip

For /F "UseBackQ Delims=" %%I In (`Dir "%input%" /B 2^>Nul`) Do For %%K In (%ext%) Do If /I "%%~xI"==".%%K" Call :_copyF "%%I"
Exit
:_copyF
Set cn=
:_loop
If Exist "%output%\%~n1%cn%%~x1" Set /a cn+=1& Goto _loop
Copy "%input%\%~1" "%output%\%~n1%cn%%~x1">Nul
GoTo :EOF

Pshek
13-08-2010, 11:12
Спасибо...

akel
05-09-2012, 12:39
Переименование файлов по порядку
http://tool-bar.ru/renamefiles.html
попробуй этой программкой

ospekt00
30-07-2018, 13:12
Добрый день, подскажите по данному скрипту:

@Echo Off
Set input=MAIL
Set output=SentMail
For /F "UseBackQ Delims=" %%I In (`Dir "%input%" /B 2^>Nul`) Do Call :_copyF "%%I"
Exit
:_copyF
Set cn=
:_loop
If Exist "%output%\%~n1%cn%%~x1" Set /a cn+=1& Goto _loop
Copy "%input%\%~1" "%output%\%~n1%cn%%~x1">Nul
GoTo :EOF

Как сделать что бы после копирования в директорию output целевой файл из input удалялся, либо чтобы после всего копирования директория input чистилась? Заранее спасибо.

Iska
30-07-2018, 15:36
Как сделать что бы после копирования в директорию output целевой файл из input удалялся »

If Exist "%output%\%~n1%cn%%~x1" Set /a cn+=1& Goto _loop
Copy "%input%\%~1" "%output%\%~n1%cn%%~x1">Nul && del /f /q "%input%\%~1"
GoTo :EOF

ospekt00
30-07-2018, 15:51
Спасибо, все получилось




© OSzone.net 2001-2012